Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГА Методичка_полная_укр.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.87 Mб
Скачать

Порядкове представлення

Порядкове представлення представляє тур як список з n міст; i-й елемент списку - номер від 1 до n-i-1. Ідея порядкового представлення полягає в наступному. Є кілька впорядкованих списків міст ІЗ, які служать як точки зв'язку для списків з порядковим представленням. Припустимо, наприклад, що такий упорядкований список простий:

(1 2 3 4 5 6 7 8 9).

Тоді тур

1-2-4-3-8-5-9-6-7

буде представлений як список l з посилань,

l=(1 1 2 1 4 1 3 1 1)

і може бути інтерпретований у такий спосіб:

  • Тому що перший номер списку l 1, беремо перше місто зі списку З як перше місто з тура (місто номер 1), і виключаємо його зі списку. Частина маршруту - це

1

  • Наступний номер у списку l також 1, тому беремо перший номер зі списку, що залишився. Оскільки ми виключили зі списку l 1-е місто, наступне місто - 2. Виключаємо й це місто зі списку. Маршрут:

1 - 2

  • Наступний номер у списку l - 2. Беремо зі списку l 2-ий друге по порядку місто, з тих що залишилися. Це - 4. Виключаємо його зі списку. Маршрут:

1 - 2 - 4

  • Наступний номер у списку l - 1. Беремо зі списку l 1-й місто - № 3. Маємо маршрут

1 - 2 - 4 - 3

  • Наступний у списку l - 4, беремо 4-й місто зі списку, що залишився (8).

Маршрут:

1 - 2 - 4 - 3 - 8

  • Наступний номер у списку l - 1. Беремо зі списку l 1-й місто - № 5. Маршрут:

1 - 2 - 4 - 3 - 8 - 5

  • Наступний номер у списку l - 3. Беремо наступне місто зі списку (9). Видаляємо його із С. Маршрут:

1 - 2 - 4 - 3 - 8 - 5 - 9

  • Наступний номер у списку l - 1, тому беремо перше місто з поточного списку С и наступне місто маршруту (місто номер 6), і видаляємо його із С. Частковий маршрут має вигляд:

1 - 2 - 4 - 3 - 8 - 5 - 9 - 6

  • Останнім номером у списку l завжди буде 1, тому беремо останнє місто, що залишилося, з поточного списку С и останнє місто маршруту (місто номер 7), і видаляємо його із С. Остаточно маршрут має вигляд:

1 - 2 - 4 - 3 - 8 - 5 - 9 - 6 - 7

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

p1 = (1 1 2 1| 4 1 3 1 1) і

p2 = (5 1 5 5 | 5 3 3 2 1),

які позначають відповідно маршрути

1 - 2 - 4 - 3 - 8 - 5 - 9 - 6 - 7 і

5 - 1 - 7 - 8 - 9 - 4 - 6 - 3 - 2,

с точкою розрізу, позначеною « | » породять наступних нащадків:

o1 = (1 1 2 1 5 3 3 2 1) і

o2 = (5 1 5 5 4 1 3 1 1).

Ці нащадки позначають маршрути

1 - 2 - 4 - 3 - 9 - 7 - 8 - 6 - 5 і

5 - 1 - 7 - 8 - 6 - 2 - 9 - 3 - 4

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

Шляхове представлення

Шляхове представлення - це, можливо, найбільш природне представлення тура. Наприклад, тур

5 - 1 - 7 - 8 - 9 - 4 - 6 - 2 - 3

представлений просто як

(5 1 7 8 9 4 6 2 3).

Для шляхового представлення широко відомі три операції кросовера: частково-відображений - partially-mapped (PMX), порядковий - order (OX), циклічний - cycle (CX) кросоверы.

  • PMX - будує нащадків, вибираючи підпослідовність із тура від одного з батьків і зберігаючи порядок і послідовність найбільшого з можливого числа міст іншого батька. Підпослідовність маршруту вибирається двома випадковими крапками розрізу. Наприклад, два батьки (розрізи відзначені “ | “)

p1= (1 2 3 | 4 5 6 7 | 8 9) і

p2= (4 5 2 | 1 8 7 6 | 9 3)

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

о1= (х х х | 4 5 6 7 | х х) і

о2= (х х х | 1 8 7 6 | х х)

також цей обмін визначає серію перетворень даних:

1 <-> 4, 8 <-> 5, 7<-> 6 і 6 <-> 7

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

о1= (х 2 3 | 4 5 6 7 | х 9) і

о2= (х х 2 | 1 8 7 6 | 9 3).

Наприкінці, перший «х» з нащадка о1 (який повинен був бути 1, але був виявлений конфлікт) заміняється на 4 (див. серію перетворень даних). У такий же спосіб, другий «х» з нащадка о1 міняємо на 5 і «х»-и в нащадку о2 міняємо на 1 і 8 відповідно. Маємо нащадків:

о1= (4 2 3 | 4 5 6 7 | 5 9) і

о2= (1 8 2 | 1 8 7 6 | 9 3).

PMX розробляє важливі спільності в значеннях і порядку проходження, коли він використовується з відповідним чином розробленим відтворювальним планом.

  • ОХ - будує нащадків, вибираючи шматок з одного батька, інші міста - з іншого, дотримуючи черговості міст. Наприклад, два батьки (розрізи відзначені “ | “)

p1= (1 2 3 | 4 5 6 7 | 8 9) і

p2= (4 5 2 | 1 8 7 6 | 9 3)

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

о1= (х х х | 4 5 6 7 | х х) і

о2= (х х х | 1 8 7 6 | х х)

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

о1= (2 1 8 | 4 5 6 7 | 9 3) і

о2= (3 4 5 | 1 8 7 6 | 9 2).

Кросовер ОХ використовує властивість шляхового представлення, що порядок міст важливий, а перше місто - ні. Тури:

1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 і

2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 1

є фактично ідентичними.

  • СХ - будує нащадків таким чином, що кожне місто (і його позиція) приходять від одного з батьків. Два батьки

p1= (1 2 3 4 5 6 7 8 9) і

p2= (4 5 2 1 8 7 6 9 3)

будуть породжувати першого нащадка, взявши перше місто від першого батька:

о1=(1 х х х х х х х х).

Після цього кожне місто в нащадку повинен бути взятий від одного з його батьків (з тієї ж позиції, на якій перебувало попереднє місто в іншому батьку). У нашому випадку, це місто 4. ставимо його на ту ж позицію, на якій він перебував у р1

о1=(1 х х 4 х х х х х).

Далі діючи в такий же спосіб, знаходимо місто 8, що перебуває «нижче» міста 4

о1=(1 х х 4 х х х 8 х).

У такий же спосіб ставимо й міста 3 і 2.

о1=(1 2 3 4 х х х 8 х).

Подальше заповнення тим же образом неможливо, тому що нижче міста 2 перебуває місто 1, тобто утвориться замкнутий цикл. Інші міста беремо з іншого батька.

о1=(1 2 3 4 7 6 9 8 5).

Діючи в такий же спосіб, але починаючи з батька р2, одержимо другого нащадка

о2=(4 1 2 8 5 6 7 3 9).

СХ зберігає абсолютну позицію елементів тієї ж, що й у батьків.

Існують і інші операції для шляхового представлення.

Шляхове представлення занадто бідно, щоб представляти важливі властивості тура, такі як ребра. Але в порівнянні з іншими векторними представленнями вони показують непогані результати, мають досить широкі можливості.