Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Алгоритм Дейкстры

Тип Реферат
Предмет Математика
Просмотров
1619
Размер файла
299 б
Поделиться

Ознакомительный фрагмент работы:

Алгоритм Дейкстры

1. Постановка задачи

Настоящая курсовая работа моделирует логическую задачу, состоящую из следующих частей:

1) Изучение конкретного раздела дискретной математики.

2) Решение 5-ти задач по изученной теме с методическим описанием.

3) Разработка и реализация в виде программы алгоритма по изученной теме. Разработка программного интерфейса.


2. Введение

2.1 Теоретическая часть

дискретный математика программа интерфейс

Пусть дан граф G=(X, Г), дугам которого приписаны веса (стоимости), задаваемые матрицей C=[cij]. Задача о кратчайшем пути состоит в нахождении кратчайшего пути от заданной начальной вершины sX до заданной конечной вершины tX, при условии, что такой путь существует, т.е. при условии tR(s). Здесь R(s) – множество, достижимое из вершины s. Элементы cij матрицы весов C могут быть положительными, отрицательными или нулями. Единственное ограничение состоит в том, чтобы в G не было циклов с отрицательным суммарным весом. Если такой цикл Ф все же существует и xi – некоторая его вершина, то, двигаясь от s к xi, обходя затем Ф достаточно большое число раз и попадая наконец в t, мы получим путь со сколь угодно малым () весом. Таким образом, в этом случае кратчайшего пути не существует.

Если, с другой стороны, такие циклы существуют, но исключаются из рассмотрения, то нахождение кратчайшего пути (простой цепи) между s и t эквивалентно нахождению в этом графе кратчайшего гамильтонова пути с концевыми вершинами s и t. Это можно усмотреть из следующего факта. Если из каждого элемента cij матрицы весов C вычесть достаточно большое число L, то получится новая матрица весов C'=[cij'], все элементы cij' которой отрицательны. Тогда кратчайший путь от s к t – с исключением отрицательных циклов – необходимо будет гамильтоновым, т.е. проходящим через все другие вершины. Так как вес любого гамильтонова пути с матрицей весов C' равен весу этого пути с матрицей весов C, но уменьшенному на постоянную величину (n-1)×L, то кратчайший путь (простая цепь) от s к t с матрицей C' будет кратчайшим гамильтоновым путем от s к t при первоначальной матрице C. Задача о нахождении кратчайшего гамильтонова пути намного сложнее, чем задача о кратчайшем пути. Поэтому мы будем предполагать, что все циклы в G имеют неотрицательный суммарный вес. Отсюда также вытекает, что неориентированные дуги (ребра) графа G не могут иметь отрицательные веса.

Следующие задачи являются непосредственными обобщениями сформулированной выше задачи о кратчайшем пути.

1) Для заданной начальной вершины s найти кратчайшие пути между t и всеми другими вершинами xiX.

2) Найти кратчайшие пути между всеми парами вершин.

Частные случаи, когда все cij неотрицательны, встречаются на практике довольно часто (например, когда cij являются расстояниями), так что рассмотрение этих специальных алгоритмов оправдано. Мы будем предполагать, что матрица не удовлетворяет, вообще говоря, условию треугольника, т.е. не обязательно для всех . В противном случае кратчайший путь между xj и xj состоит из одной единственной (xjxj) дуги, если такая дуга существует, и задача становится тривиальной. Если в графе G дуга (xjxj) отсутствует, то ее вес полагается равным .

На практике часто требуется найти не только кратчайший путь, но также второй, третий и т.д. кратчайшие пути в графе. Располагая этими результатами, можно решить, какой путь выбрать в качестве наилучшего. Кроме того, второй, третий и т.д. кратчайшие пути можно использовать при анализе «чувствительности» задачи о кратчайшем пути.

Существуют также задачи нахождения в графах путей с максимальной надежностью и с максимальной пропускной способностью. Эти задачи связаны с задачей о кратчайшем пути, хотя в них характеристика пути (скажем, вес) является не суммой, а некоторой другой функцией характеристик (весов) дуг, образующих путь. Такие задачи можно переформулировать как задачи о кратчайшем пути. Однако можно поступить иначе: непосредственно приспособить для их решения те методы, которые применяются в задачах о кратчайшем пути.

Существует также случай, когда учитываются и пропускные способности, и надежности дуг. Это приводит к задаче о пути с наибольшей ожидаемой пропускной способностью. И хотя такая частная задача не может быть решена при помощи техники отыскания кратчайшего пути, но итерационный алгоритм, использующий эту технику в качестве основного шага, является эффективным методом получения оптимального ответа.

Наиболее эффективный алгоритм решения задачи о кратчайшем (s– t) – пути первоначально дал Дейкстра. В общем случае этот метод основан на приписывании вершинам временных пометок, причем пометка вершины дает верхнюю границу длины пути от s к этой вершине. Эти пометки (их величины) постепенно уменьшаются с помощью некоторой итерационной процедуры, и на каждом шаге итерации точно одна из временных пометок становится постоянной. Последнее указывает на то, что пометка уже не является верхней границей, а дает точную длину кратчайшего пути от s к рассматриваемой вершине. Опишем этот метод подробно.

Алгоритм Дейкстры ()

Пусть l(xi) – пометка вершины xi.

Присвоение начальных значений

Шаг 1. Положить и считать эту пометку постоянной. Положить для всех xis и считать эти пометки временными. Положить p=s.

Обновление пометок

Шаг 2. Для всех , пометки которых временные, изменить пометки в соответствии со следующим выражением: .

Превращение пометки в постоянную

Шаг 3. Среди всех вершин с временными пометками найти такую, для которой .

Шаг 4. Считать пометку вершины xi* постоянной и положить p= xi*.

Шаг 5. (1) (Если надо найти лишь путь от s к t.)

Если p=t, то l(p) является длиной кратчайшего пути. Останов.

Если pt, перейти к шагу 2.

(2) (Если требуется найти пути от s ко всем остальным вершинам.)

Если все вершины отмечены как постоянные, то эти пометки дают длины кратчайших путей. Останов.

Если некоторые пометки являются временными, перейти к шагу 2.

Доказательство того, что вышеприведенный алгоритм действительно дает кратчайшие пути, чрезвычайно простое, дадим набросок этого доказательства.

Допустим, что на некотором этапе постоянные пометки дают длины кратчайших путей. Пусть S1 – множество вершин с этими пометками, а S2 – множество вершин с временными пометками. В конце шага 2 каждой итерации временная пометка l(xi) дает кратчайший путь от sк xi, проходящий полностью по вершинам множества S1. (Так как при каждой итерации во множество S1 включается только одна вершина, то обновление пометки l(xi) требует только одного сравнения на шаге 2.)

Пусть кратчайший путь от s к xi* не проходит целиком по S1 и содержит по крайней мере одну вершину из S2, и пусть xjS2 – первая такая вершина в этом пути. Так как по предположению cij неотрицательны, то часть пути от xj к xi* должна иметь неотрицательный вес и. Это, однако, противоречит утверждению, что l(xi*) – наименьшая временная пометка, и, следовательно, кратчайший путь к xi* проходит полностью по вершинам множества S1, и поэтому l(xi*) является его длиной.

Так как вначале множество S1 равно (s) при каждой итерации к S1 добавляется xi*, то предположение, что l(xi*) равно длине кратчайшего путиxiS1, выполняется при каждой итерации. Отсюда по индукции следует, что алгоритм дает оптимальный ответ.

Если требуется найти кратчайшие пути между s и всеми другими вершинами полного связного графа с n вершинами, то в процессе работы алгоритма выполняются операций сложения и сравнения на шаге 2 и еще операций сравнения на шаге 3. Кроме того, при осуществлении шагов 2 и 3 необходимо определить, какие вершины временные, а для этого нужно еще операций сравнения. Эти величины являются верхними границами для числа операций, необходимых при отыскании кратчайшего пути между заданными вершинами s и t. Они действительно достигаются, если окажется, что вершина t будет последней вершиной, получившей постоянную пометку.

Как только длины кратчайших путей от s будут найдены (они будут заключительными значениями пометок вершин), сами пути можно получить при помощи рекурсивной процедуры с использованием соотношения (*). Так как вершина xi' непосредственно предшествует вершине xi в кратчайшем пути от s к xi, то для любой вершины xi соответствующую вершину xi' можно найти как одну из оставшихся вершин, для которой

''. (*)

Если кратчайший путь от s до любой вершины xi является единственным, то дуги (xi', xi) этого кратчайшего пути образуют ориентированное дерево с корнем s. Если существует несколько «кратчайших» путей от s к какой-либо другой вершине, то при некоторой фиксированной вершине xi' соотношение (*) будет выполняться для более чем одной вершины xi. В этом случае выбор может быть либо произвольным (если нужен какой-то один кратчайший путь между s и xi), либо таким, что рассматриваются все дуги (xi', xi), входящие в какой-либо из кратчайших путей и при этом совокупность всех таких дуг образует не ориентированное дерево, а общий граф, называемый базой относительноs или кратко – s-базой.


2.2 Задачи с методическим описанием

Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа

Неориентированное ребро будем рассматривать как пару противоположно ориентированных дуг равного веса. Воспользуемся алгоритмом Дейкстры. Постоянные пометки будем снабжать знаком +, остальные пометки рассматриваются как временные.

x1x2x3x4x5x6x7x8x9
x1103612
x21018213
x31825207
x4255164
x5510
x6201014159
x7241424
x8623155
x912139245

Алгоритм работает так:

Шаг 1. .

Первая итерация

Шаг 2. - все пометки временные.

; ; ;

Шаг 3. соответствует x7.

Шаг 4. x7 получает постоянную пометку l(x7)=3+, p=x7.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Вторая итерация

Шаг 2. - все пометки временные.

; ; ;

Шаг 3. соответствует x2.

Шаг 4. x2 получает постоянную пометку l(x2)=5+, p=x2.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Третья итерация

Шаг 2. - только вершины x3 и x9 имеют временные пометки.

;

Шаг 3. соответствует x8.

Шаг 4. x8 получает постоянную пометку l(x8)=6+, p=x8.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Четвертая итерация

Шаг 2. - только вершины x5, x6 и x9 имеют временные пометки.

; ;

Шаг 3. соответствует x4.

Шаг 4. x4 получает постоянную пометку l(x4)=7+, p=x4.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Пятая итерация

Шаг 2. - только вершины x5, x6 и x3 имеют временные пометки.

; ;

Шаг 3. соответствует x9.

Шаг 4. x9 получает постоянную пометку l(x9)=11+, p=x9.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Шестая итерация

Шаг 2. - только вершина x6 имеет временную пометку.

Шаг 3. соответствует x5.

Шаг 4. x5 получает постоянную пометку l(x5)=12+, p=x5.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Седьмая итерация

Шаг 2. - только вершина x6 имеет временную пометку.

Шаг 3. соответствует x6.

Шаг 4. x6 получает постоянную пометку l(x5)=17+, p=x6.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Восьмая итерация

Шаг 2. - только вершина x3 имеет временную пометку.

Шаг 3. x3 получает постоянную пометку l(x3)=23+.

Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа

Неориентированное ребро будем рассматривать как пару противоположно ориентированных дуг равного веса. Воспользуемся алгоритмом Дейкстры. Постоянные пометки будем снабжать знаком +, остальные пометки рассматриваются как временные.


x1x2x3x4x5x6x7x8x9
x132
x251512
x3824
x46818411
x512720
x620913
x7104916
x8241622
x91113

Алгоритм работает так:

Шаг 1. .

Первая итерация

Шаг 2. - все пометки временные.

;

Шаг 3. соответствует x5.

Шаг 4. x5 получает постоянную пометку l(x5)=2+, p=x5.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Вторая итерация

Шаг 2. - все пометки временные.

; ;

Шаг 3. соответствует x2.

Шаг 4. x2 получает постоянную пометку l(x2)=3+, p=x2.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Третья итерация

Шаг 2. - только вершины x3 и x4 имеют временные пометки.

;

Шаг 3. соответствует x3.

Шаг 4. x3 получает постоянную пометку l(x3)=8+, p=x3.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Четвертая итерация

Шаг 2. - все пометки временные.

;

Шаг 3. соответствует x4.

Шаг 4. x4 получает постоянную пометку l(x4)=9+, p=x4.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Пятая итерация

Шаг 2. - только вершины x7, x6 и x9 имеют временные пометки.

; ;

Шаг 3. соответствует x7.

Шаг 4. x7 получает постоянную пометку l(x7)=13+, p=x7.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Шестая итерация

Шаг 2. - только вершины x6 и x8 имеют временные пометки.

;

Шаг 3. соответствует x9.

Шаг 4. x9 получает постоянную пометку l(x9)=20+, p=x9.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Седьмая итерация

Шаг 2. - только вершина x6 имеет временную пометку.

Шаг 3. соответствует x6.

Шаг 4. x6 получает постоянную пометку l(x6)=17+, p=x6.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Восьмая итерация

Шаг 2. временных пометок нет.

Шаг 3. x8 получает постоянную пометку l(x8)=29+.

Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа.

дискретный математика программа интерфейс

x1x2x3x4x5x6x7x8x9
x1
x29
x383
x47
x56
x6174
x74
x87
x995

Алгоритм работает так:

Шаг 1. .

Первая итерация

Шаг 2. - все пометки временные.

;

Шаг 3. соответствует x4.

Шаг 4. x4 получает постоянную пометку l(x4)=7+, p=x4.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Вторая итерация

Шаг 2. - все пометки временные.

;

Шаг 3. соответствует x2.

Шаг 4. x2 получает постоянную пометку l(x2)=9+, p=x2.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Третья итерация

Шаг 2. ;

Шаг 3. соответствует x7.

Шаг 4. x7 получает постоянную пометку l(x7)=11+, p=x7.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Четвертая итерация

Шаг 2. ;

Шаг 3. соответствует x8.

Шаг 4. x8 получает постоянную пометку l(x8)=14+, p=x8.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Пятая итерация

Шаг 2. ;

Шаг 3. соответствует x3.

Шаг 4. x3 получает постоянную пометку l(x3)=14+, p=x3.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Шестая итерация

Шаг 2. ;

Шаг 3. соответствует x9.

Шаг 4. x9 получает постоянную пометку l(x9)=19+, p=x9.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Седьмая итерация

Шаг 2. ;

Шаг 3. соответствует x5.

Шаг 4. x5 получает постоянную пометку l(x5)=17+, p=x5.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Восьмая итерация

Шаг 2. ;

Шаг 3. x6 получает постоянную пометку l(x6)=29+.

Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа.

Алгоритм работает так:

Шаг 1. .

Первая итерация

Шаг 2.

; ;

Шаг 3. соответствует x2.

Шаг 4. x2 получает постоянную пометку l(x2)=5+, p=x2.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Вторая итерация

Шаг 2.

; ;

Шаг 3. соответствует x6.

Шаг 4. x6 получает постоянную пометку l(x6)=8+, p=x6.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Третья итерация

Шаг 2.

; ;

Шаг 3. соответствует x4.

Шаг 4. x4 получает постоянную пометку l(x4)=10+, p=x4.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Четвертая итерация

Шаг 2.

;

Шаг 3. соответствует x3.

Шаг 4. x3 получает постоянную пометку l(x3)=13+, p=x3.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Пятая итерация

Шаг 2.

;

Шаг 3. соответствует x8.

Шаг 4. x8 получает постоянную пометку l(x8)=16+, p=x8.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Шестая итерация

Шаг 2.

;

Шаг 3. соответствует x7.

Шаг 4. x7 получает постоянную пометку l(x7)=17+, p=x7.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Седьмая итерация

Шаг 2.

; ;

Шаг 3. соответствует x10.

Шаг 4. x10 получает постоянную пометку l(x10)=18+, p=x10.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Восьмая итерация

Шаг 2. ;

Шаг 3. соответствует x5.

Шаг 4. x5 получает постоянную пометку l(x5)=19+, p=x5.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Девятая итерация

Шаг 2. ;

Шаг 3. x9 получает постоянную пометку l(x9)=21+.

Найти кратчайшие пути от вершины 1 ко всем другим вершинам графа

Алгоритм работает так:

Шаг 1. .

Первая итерация

Шаг 2.

; ;

Шаг 3. соответствует x7.

Шаг 4. x7 получает постоянную пометку l(x7)=6+, p=x7.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Вторая итерация

Шаг 2.

;

Шаг 3. соответствует x2.

Шаг 4. x2 получает постоянную пометку l(x2)=7+, p=x2.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Третья итерация

Шаг 2.

;

Шаг 3. соответствует x4.

Шаг 4. x4 получает постоянную пометку l(x4)=8+, p=x4.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Четвертая итерация

Шаг 2.

; ; ;

Шаг 3. соответствует x5.

Шаг 4. x5 получает постоянную пометку l(x5)=16+, p=x5.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Пятая итерация

Шаг 2.

; ;

Шаг 3. соответствует x8.

Шаг 4. x8 получает постоянную пометку l(x8)=16+, p=x8.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Шестая итерация

Шаг 2. ;

Шаг 3. соответствует x3.

Шаг 4. x3 получает постоянную пометку l(x3)=18+, p=x3.

Шаг 5. Не все вершины имеют постоянные пометки, поэтому переходим к шагу 2.

Седьмая итерация

Шаг 2. ;

Шаг 3. x6 получает постоянную пометку l(x6)=20+.


3. Алгоритмизация задачи

1) Вводим количество вершин неориентированного графа.

2) Если количество вершин больше 5, то переходим к пункту 3; иначе переходим к пункту 4.

3) Генератором случайных чисел произвольно задаются связи между вершинами в матрице смежностей, переходим к пункту 5.

4) Вводим связи между вершинами, исходя из следующего условия:

- если не существует пути длиной в одно ребро из одной вершины в другую, то ставим «100»,

- если существует путь между двумя вершинами, то ставим произвольное положительное ненулевое значение веса дуги.

Все введенные данные заносятся в матрицу смежностей.

5) Вводим номера вершин, путь между которыми нужно найти.

6) Задаем начальные значения длин путей равных 100 (в программе это обозначает бесконечность), а пометки всех вершин обнуляем.

7) Для начальной вершины в матрицу, хранящую пути (предшествующие вершины), заносим значение нуль, поскольку нет вершин предшествующих началу, значению пути присваиваем значение нуля, пометку на вершину устанавливаем в единицу.

8) Измененяем длины путей между вершинами «i» и начальной при условии, что рассматриваемая дуга не идет из вершины в саму себя и пометка этой вершины равна нулю, то тогда:

а) просматриваем длину пути в вершину «i» и сравниваем с длиной пути из начальной вершины «Nac»

б) получаем, что длина пути из вершины «s» меньше начального значения пути в вершину «i», то запоминаем в T[i] – ом элементе новую длину пути (меньшую) и H[i] – му присваиваем значение «s».

9) Присваиваем переменной ‘t» значение 100 (бесконечность), а переменной для хранения текущей вершины «k» присваиваем значение нуль.

10) Производим попытку уменьшить длину пути. Если вершина не помечена (ее пометка равна нулю), то если длина пути меньше значения «t» то значению «t» присваиваем текущее значение пути, а переменной для хранения текущей вершины «k» даем значение этой переменной.

11) Если переменная для хранения текущей вершины имеет значение нуля, то пути нет, переходим к пункту 14, иначе переходим к пункту 12.

12) Если переменная для хранения текущей вершины имеет значение конечной вершины, то путь найден, он кратчайший, переходим к пункту 14, иначе переходим к пункту 13.

13) Пометку на вершину, которую хранит переменная «k», изменяем на единицу и переходим к пункту 8.

14) Выводим на экран сообщение о длине пути между вершинами, если такой путь существует (т.е. путь имеет неотрицательную длину).


4 Экранная форма интерфейса и инструкция пользователя

Exit
Drawing of graph
Algorithms of painting
Press the first letter of item that you needs

Пункты меню:

1. Алгоритм реализации поставленной задачи.

2. Изображение исходного графа.

3. Выход из программы.

Для выбора пункта необходимо нажать на соответствующую клавишу:

- если это пункт 1, то нажмите «A» или «a»;

- если это пункт 2, то нажмите «D» или «d»;

- если это пункт 3, то нажмите «E» или «e».


Заключение

В соответствии с поставленной задачей в курсовой работе было выполнено следующее:

1) Изучен конкретный раздел дискретной математики.

2) Решены 5 задач по изученной теме с методическим описанием.

3) Разработан и реализован в виде программы алгоритм по изученной теме. Разработан программный интерфейс.


Литература

1. Новиков Ф.А. Дискретная математика для программистов – СПб.: Питер, 2002 год

1. Немнюгин С.А. TurboPascal: практикум – СПб.: Питер, 2002 год


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно