Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота з теорії алгоритмів.doc
Скачиваний:
8
Добавлен:
23.11.2019
Размер:
502.27 Кб
Скачать

1.1.1 Словесний Вербальний опис алгоритму

1.У вхідній підпослідовності (чому не послідовності ) елементів вибирається елемент з найменшим ключем.

2. Цей (який ) елемент міняється місцями з першим елементом a1.

Ці операції потім повторюються з n, що залишилися, - 1 елементами, потім з n – 2-ма елементами, поки не залишиться тільки один елемент - найбільший.

1.1.2.Структура даних

A[]n – масив даних з n елементів

n – кількість елементів

i,j – індекси елементів масиву

k – змінна, що зберігає значення елемента який обмінюють місцями

A[i] – i-тий елемент масиву

A[j] – j-тий елемент масиву

Obmin – обмін елементів місцями

1.1.3.Опис схеми алгоритму

1.Масив даних A[]n подається на вхід, після чого входить в цикл по змінні

і(n-1),0 .

2.Функцією цього (якого) циклу є прохід по всіх значеннях масиву, окрім останнього(n-1).

3.Після проходження першого значення циклу по і, цикл по j(n),i+1 проходить всі інші значення, що стоять після першого значення, порівнюючи ці значення із першим.

4. Якщо знаходиться найближчий елемент A[i]>A[j], який більший за перший,

мінімального серед елементів Ai,.., AN, а значенням До - номер цього елементу. Отже, пункт 2 можна записати конкретніше:

поміняти місцями елементи A1 і AK (2)

Відомо, що в загальному випадку для взаємної перестановки в пам'яті двох змінних потрібна третя, допоміжна, :

2. C:= A[I]; A[I] := A[K]; A[K] := C.

Помітимо, проте, що в нашій конкретній ситуації ця третя змінна не потрібна, оскільки її роль грає змінна Х з пункту 1:

2. A[K] := A[I]; A[I] := X.

Ми заощадили одне привласнення, але це немало, оскільки дії виконуються в циклі багаторазово.

Тепер можна записати повністю алгоритм сортування простим вибором.

алг ВИБІР(цілий N, дробтаб A[1: N])

арг A, N

рез A

начдроб X, цілий I, J, K

I:= 1

якщо I<=N - 1

інакше K:= I; X:= A[I]; J:= I+1

якщо J<=N

інакше якщо A[J]<X

тоді X:= a[J];K:= J

кінець

J:= J+1

кінець

A[K] := A[I]; A[I] := X;

I:= I+1

кінець

кінець.

1.1.6. Контрольний приклад

8. Із рядка і=7 вибираємо найменший елемент, і міняємо його із N-7.

9.Оскільки всі елементи відсортовані, то рядок і=7 записуємо в результат.

1.2 Хвилевий алгоритм пошуку довгого шляху на графі

Хвилевий алгоритм дістав свою назву через те, що сам принцип його функціонування заснований на "випусканні хвилі", якого-небудь гіпотетичного обурення за результатами якого є можливість судити про кількість суміжних з виділеною вершин, а так само про відстань(довжині дуги) до кожної з них.

1.2.3 Структури даних

З самої структури алгоритму очевидно, що для його функціонування потрібні:

1.2.7. Опис процедури BuildWays

У масив М заносимо індекси усіх виділених вершин. Робимо перевірку на те чи сума усіх виділених дуг рівна вазі останньої вершини. Якщо так – будуємо шлях. Перевіряємо масив на порожність. Якщо умова правдива – закінчуємо процедуру, якщо ні переходимо на етап перевірки рівності суми шляхів дуг та віги останньої вершини.

1.2.8. Контрольний приклад

Для детального опису дії хвилевого алгоритму пошуку довгого шляху скористаємося графом що задається таблиці матриці зв'язності (див. табл. ):

Таблиця . Назва

x1

x2

x3

x4

x5

x6

x7

x8

x1

3

4

2

5

x2

1

2

x3

4

3

x4

3

4

x5

6

x6

3

x7

5

x8

Таким чином, знаючи таблицю зв'язності можна побудувати граф для наочнішої ілюстрації прикладу (див. рис. ).

Группа 93

Рис. . Назва

Отже, на першому проході хвилевого алгоритму виконується пункт 1, тобто встановлюються значення вагів усіх вершин в нуль, і поміщає в масив М індекс початкової вершини, математично це можна записати так:

Крок 1:

П. 1:

На другому проході, оскільки. М<>0, виконується пункт 2, з масиву М забирається перший елемент, цей індекс надається індексній змінній i

складається безліч результатів для вершини Х i, а потім обчислюються ваги суміжних вершин :

Крок № 2:

П. 2:

Як видно з приведених записів, в результаті цього проходу чотири вершини отримали нові ваги, і відповідно в масив М потрапили їх індекси, оскільки до цього вони в нім не містилися.(Надалі скорочено викладу приводитимуться переважно математичні записи роботи алгоритму).

Крок № 3:

П. 2:

Крок № 4:

П. 2:

Крок № 5:

П. 2:

Слід зазначити, що в результаті цього проходу вершина Х6 не поміняла своєї ваги, оскільки вже мала максимально можливу.

Крок № 6:

П. 2:

Крок № 7:

Крок № 8:

Крок № 9:

Крок № 10:

П. 2: М=0, виконується п. 3.

Отже, на даний момент отриманий граф, усі вершини якого набули максимально можливих значень. А оскільки масив вершин, що змінили вагу, порожній, те управління передається третьому пункту алгоритму, який відмічає довгий шлях. Слід особливо відмітити, що, як видно з попередніх обчислень, максимальні ваги вершин можуть бути досягнуті при просуванню по різних дугах. Для більшої наочності прикладу нижче приведений вид графа на цьому етапі:

Группа 46

0

3

4

2

8

7

5

14

6

На етапі виконання третього пункту алгоритму критерієм для виділення дуги, як і для алгоритму знаходження найкоротшого шляху, являється збіг різниці вагів відповідних вершин з вагою самої дуги. Таким чином, починаючи з вершини Х8 отримаємо:

Крок № 11: Для виділеної вершини x8

П. 3:

, тому дуга виділяється.

, дуга не виділяється .

дуга не виділяється.

виділяється вершина .

Крок № 12: Для виділеної вершини x7

П. 3:

, тому дуга виділяється.

, і дуга виділяється, одночасно

дуга не виділяється

виділяється вершина X1, та X2

Крок № 13: Для виділеної вершини Х6

П. 3:

, тому дуга виділяється.

, дуга не виділяється

виділяється вершина х3,

Крок № 14: Для виділеної вершини Х5

П. 3:

, тому дуга не виділяється.

, і дуга виділяється, одночасно

слід зазначити, що вершина не виділяється, оскільки вже виділена.

Крок № 15: Для виділеної вершини х4

П. 3:

, і дуга виділяється,

Слідує відмітити, що вершина не виділяється, оскільки вже виділена.

Крок № 16: Для виділеної вершини х3

П. 3:

і дуга виділяється

Слідує відмітити, що вершина не виділяється, оскільки вже виділена.

Крок №17: Для виділеної вершини х2

П.3:

і дуга виділяється,

Слідує відмітити, що вершина не виділяється, оскільки вже виділена.

рок №18: Для виділеної вершини х1

П.3:

Оскільки в цю вершину не входить не оної дуги і більше немає відмічених вершин, переходжуватимемо до етапу складання довгого шляху.

Отже сполучаючи дуги за принципом: кінцевий індекс попередньої - початковий наступний, отримуємо три довгих шляхів завдовжки 14:

Дуги-претенденти:

Найдовший шлях :

Для більшої наочності зображує граф у своєму кінцевому стані, нанісши на нього значення вагів вершин, ваги дуг, а так само виділивши довгий шлях :

Группа 1

0

3

2

7

14

5

8

4

6

Приведемо табличний метод запису процесу :

X1

X2

X3

X4

X5

X6

X7

X8

M

0

0

0

0

0

0

0

0

1

0

3

4

2

0

0

5

0

2,3,4,7

0

3

4

2

4

0

5

0

5,7

0

3

4

2

8

7

5

0

5,6

0

3

4

2

8

7

5

0

6,7

0

3

4

2

8

7

5

14

8

0

3

4

2

8

7

5

14

8

0

3

4

2

8

7

5

14

8

При виконанні курсової роботи було побудовано алгоритми сортування методом простого вибору , зроблені відповідні контрольні приклади, а також алгоритм пошуку довгого шляху на графах.

Розділ 2. Опис Машини Тюрінга

    1. Основні поняття

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

    1. Ідея вирішення

    1. Словесний опис алгоритму

    2. Використовувані символи на стрічці

    3. Структури даних

    4. Функціональна схема МТ

    5. Приклад роботи МТ

Розділ 3. Програма

3.1. Опис програми командами машини Тюрінга

3.2. Опис програми на мові програмування

Висновки

Після виконання даної курсової роботи я зробив деякі висновки:

Сортування методом простого вибору – це найперше сортування яке приходить до розуму, адже алгоритм виконання цього сортування є простим і досить зрозумілим. Таким, що навіть звичайна людина зможе без особливих проблем його зрозуміти. Також сортування простим вибором має і свої недоліки – це час, який затрачається на його обробку, а також громіздкість при покроковому виконанні алгоритму.

Хвилевий алгоритм знаходження найдовшого шляху – це є той самий алгоритм знаходження найменшого шляху, тільки попередньо усім вершинам надаються ваги із значенням 0. Автоматично буде шукатись найдовший шлях. Також можна зауважити, що коли були знайдені дуги, то не всі вони були використанні у побудові найдовшого шляху.

Алгоритм машини Тюрінга був побудований таким чином, що кожен крок контролює одну послідовність непустих значень, і коли були пройдені три такі кроки, то на місці пустоти записується «*», коли ж послідовність закінчується. То машина зупиняється.