Obsah

Jak na to

Reseni pres DFS:

Jak na to 1

Zadání úlohy směřuje na hledání hamiltonovské kružnice v úplném grafu, tak, aby výsledný graf byl planární a zároveň cesta splňovala určité paramatry, např. maximální délka cesty. Stavový prostor pro tuto úlohu tvoří permutace všech uzlů. Tento prostor lze procházet trochu modifikovaným rekurzivním DFS (uzel z něhož se nelze již nikam dostat nezůstává CLOSED, ale vrátí se do stavu FRESH). Následující příklad je uveden pro 5 uzlů s indexy 0..4.

Na začátku začneme např. s uzlem na indexu 0. Jelikož se jedná o úplný graf, následníci každého uzlu jsou všechny ostatní uzly. Výsledné permutace z ostatních uzlů budou:

0 1 2 3 4 (lépe uvidíte, pokud si je zakreslíte do grafu, kde kořenem je prvek 0):

- - - 4 3

- - 3-2-4

..

..

0 4 3 2 1

Tento strom tedy tvoří stavový prostor prohledávání. Počet listů je bohužel roven (n - 1)!, proto bude nutné tento prostor ořezat (neprocházet již další hladiny) na základě podmínek ze zadání plus využít některé vlastnosti permutací.

Ořezávací podmínky ze zadání:

Z těchto podmínek plyne, že alespoň u druhé podmínky si musíme pamatovat uzly v aktuální cestě pro kontrolu křížení. Aktuální vzdálenost lze předávat např. jako parametr do rekurzivního volání.

Ořezávací podmínky z vlastnosti permutace:

Pokud projdete statovýv prostor pro např. všech 5-ti prvků a zjistíte, že takováto cesta neexistuje, lze využít obdobného postupu pro uzel 1 jako kořen s tím, že uzel 0 bude pro vás již uzavřený a nebudete ho brát v potaz. Následně pro 2, 3, … atd, až do doby, kdy vám zbydou alespoň 3 uzly (nutné pro vytvoření kružnice).

Doporučení