DIMA - Teorie grafů



Hamiltonovské grafy

Teorie

Definice hamiltonovského grafu a hamiltonovské kružnice:

Hamiltonovskou cestou v grafu nazýváme cestu, která obsahuje všechny vrcholy daného grafu.

Graf, ve kterém existuje kružnice procházející všemi jeho vrcholy právě jednou, nazýváme hamiltonovský graf a příslušnou kružnici hamiltonovská kružnice.

Název grafu se vztahuje ke jménu irského matematika Sira Williama Rowana Hamiltona, který vymyslel v roce 1857 hru, skládající se z pravidelného 12-ti stěnu (obr.1) a 20-ti kolíků. Každý kolík byl umístěn v jednom rohu 12-ti stěnu (tj. v každém vrcholu) a byl označen jménem důležitého hlavního města Evropy. Úkolem hráče bylo najít cestu procházející všechna města, každé právě jednou, a vrátit se zpět do města, z kterého vyšel. Pro přehlednost byl na každém kolíku provázek, který hráč spojil vždy s následujícím kolíkem, v pořadí, jakým města procházel.

hamiltonovský graf

Obr.1 Hamiltonovský graf

Příklady grafů, které nejsou hamiltonovské:

nehamiltonovský graf

Příklady grafů, které jsou hamiltonovské:

hamiltonovské grafy

Rozhodnout, zda je graf hamiltonovský, není vždy snadné. Dosud totiž není známa žádná jednoduchá nutná a postačující podmínka k tomu, aby graf byl hamiltonovský. Je známo několik postačujících podmínek k hamiltonovskosti grafu:

Věta 1 (Dirac, 1952):

Nechť graf G je n-vrcholový, n≥3, stupeň každého vrcholu je alespoň n 2 , pak G je hamiltonovský.

Věta 2 (Ore, 1960):

Nechť G je n-vrcholový graf, n≥3, a nechť pro každou dvojicí nesousedních vrcholů u a v platí: degGu+degGvn,pak G je hamiltonovský.

Nutnou podmínku dává následující věta:

Věta 3:

Nechť G=(V,E) je hamiltonovský graf, S nechť je neprázdná vlastní podmnožina vrcholové množiny V a nechť c(G-S) je počet komponent grafu G-S, pak platí: c(G-S)≤|S|.

Graf G je hamiltovský, hamiltonovka je v grafu vyznačená barevně.

Graf G

Důsledek:

Graf Kr,s je hamiltonovský právě tehdy, když r = s.

Poznámka: Opačné tvrzení k Větě 3 neplatí. Viz následující příklad.

Petersenův graf není hamiltonovský, i když pro každou jeho podmnožinu S množiny jeho vrcholů platí tvrzení z Věty 3.

Petersenův graf

Poznámka: Větu 3 můžeme použít jenom k důkazu, že graf není hamiltonovský. Když najdeme v grafu jedinou vlastní podmnožinu vrcholů, pro kterou neplatí vztah z Věty1, tak můžeme prohlásit, že graf není hamiltovoský. Když pro všechny vlastní podmnožiny platí vztah z Věty1, tak graf může i nemusí být hamiltonovský.

Základní typ algoritmu pro hledání hamiltonovské cesty:

Vezmeme cestu x0, x1, …, xk ve zkoumaném grafu, kterou se pokoušíme prodloužit na hledanou cestu nebo kružnici postupným přidáváním hran vedoucích z koncového vrcholu do ještě nepoužitých vrcholů. Pokud takové prodloužení neexistuje, zkrátíme cestu x1, …, xk a snažíme se prodloužení určit jiným způsobem. Výpočet končí ve chvíli, kdy je buď nalezeno požadované řešení, nebo se neúspěšně proberou všechny možnosti prodlužování.

Typy hamiltonovských úloh

Úlohy, ve kterých jde o hamiltonovské pojmy, mají mnoho variant a lze je třídit z několika různých hledisek. Rozlišujeme existenční a optimalizační úlohy. V existenčních úlohách jde o zjištění existence nebo dokonce o nalezení hamiltonovské cesty, kružnice nebo cyklu v daném grafu. V optimalizačních úlohách jsou hrany grafu ohodnoceny délkami a požaduje se nalezení hamiltonovské cesty, kružnice nebo cyklu o nejmenší délce. Dále úlohy dělíme na orientované a neorientované podle toho, zda hledáme orientovanou nebo neorientovanou hamiltonovskou cestu, případně zda hledáme hamiltonovský cyklus nebo kružnici. V případě hamiltonovských cest musíme navíc rozlišit tři až čtyři varianty podle toho, zda je v zadání úlohy předepsán vrchol, ve kterém musí hamiltonovská cesta začínat, a vrchol, kde musí končit. Všechny výše uvedené typy hamiltonovských úloh jsou pro obecné grafy NP – těžké (tj. neexistuje pro úlohu algoritmus, který by jí řešil v polynomiálním čase).

Uvedeme základní pravidla pro hledání hamiltonovské kružnice v daném malém grafu:

  1. Má-li daný graf n vrcholů, pak hamiltonovská kružnice má právě n hran.
  2. Jestliže vrchol vstupeň k, pak hamiltonovská kružnice musí obsahovat právě dvě hrany incidentní s vrcholem v.
  3. Při konstrukci hamiltonovské kružnice nemůže být vytvořena kružnice, která by neobsahovala všechny vrcholy daného grafu.
  4. Jakmile hamiltonovská kružnice, kterou konstruujeme, prochází vrcholem v, pak ostatní nepoužité hrany incidentní s vrcholem v můžeme vyloučit (tyto již v hamiltonovské kružnici ležet nebudou).

Příklad

Návštěvy obvodního lékaře

Obvodní lékař potřeboval navštívit všechny své pacienty, ale tak, aby každého pacienta navštívil právě jednou. Situace je zakreslena v následujícím grafu, kde vrcholy grafu jsou pacienti a hrany cesty mezi nimi. Je možno takovou cestu vykonat?

cesta lékaře

Z animace je zřejmé, že takovou návštěvu vykonat lze. Výsledná návštěva je hamiltonovská kružnice.

Poznámka: Z animace je potrné, že při konstrukci hamiltonovské kružnice postupujeme podle výše uvedených pravidel. Je vhodné začít ve vrcholech stupně 2 a potom postupně obarvovat další hrany až vznikne hamiltonovská kružnice.

Řešený příklad

1. Rozhodněte, zda následující graf obsahuje hamiltonovskou kružnici, či nikoli.

příklad

Krok 1

Při rozhodování, zda je graf hamiltonovský musíme podle základních pravidel najít hamiltonovskou kružnici. Z následujícího obrázku vidíme, že graf hamiltonovský je i když nesplňuje Větu 1 (obsahuje vrchol 2. stupně, přičemž 2<5/2)

hamiltonovská kružnice

Krok 2

Splňuje Větu 2 (součet stupňů libovolných dvou nesousedních vrcholů je alespoň 5). Je tedy podle výše uvedených podmínek hamiltonovský.

Z uvedeného jasně vidíme, že Věty nejsou nutné podmínky pro určování hamiltonovských grafů.

2. Rozhodněte, zda následující graf je hamiltonovský?

Graf

Krok 1

Podle základních pravidel najdeme v grafu hamiltonovskou kružnici.

Krok 2

Hamiltonovská kružnice je na následujícím obrázku:

Hamiltonovský graf

Krok 3

Tentokrát graf splňuje všechny tři věty.

Úlohy k řešení

1. Najděte v grafech na obrázku hamiltonovskou kružnici (existuje jich více).

hamiltonovská kružnicetesový graftestový graf

Výsledek

kružnicehamiltonovský grafhamiltonovský graf

2. Dokažte sporem tvrzení:

Jestliže v grafu G existuje most, pak v grafu G neexistuje hamiltonovská kružnice. (nejprve správně zformulujte tvrzení pro důkaz sporem!)

Výsledek

Důkaz sporem:

Nechť předpoklad neplatí: V grafu G existuje most a zároveň v grafu existuje hamiltonovská kružnice.

V G existuje hamiltonovská kružnice ⇒ v G existuje kružnice C obsahující všechny vrcholy. Hrany grafu můžeme rozdělit do dvou skupin E1, E2. Skupina E1 - hrany ležící na kružnici C, E2 - hrany neležící na kružnici C.

Podle věty: Jestliže hrana e∈E leží na kružnici, pak hrana e není most. Žádná hrana e∈E1 není most.

A když z grafu odebereme libovolnou hranu e∈E2, tak v G-e existuje kružnice C, obsahující všechny vrcholy grafu ⇒ pro všechny libovolné dva vrcholy existuje cesta (po kružnici) ⇒ G-e je souvislý, proto žádná hrana e∈E2 není most.

Tedy graf G neobsahuje most a to je spor s předpokladem, proto platí původní tvrzení.

Zdroje textů

  1. DIMA - diskrétní matematika, http://oliva.uhk.cz
  2. Hliněný, Petr. Diskrétní Matematika (456-533 DIM), 2006
  3. Kovář, Petr. DISKRÉTNÍ MATEMATIKA a ÚVOD DO TEORIE GRAFŮ ( příklady k procvičení ), 2012
  4. Wikipedia, http://cs.wikipedia.org/wiki/Hamiltonovský_graf