Na cvičení jsme si ukázali, jak se dají v počítači ukládat grafy s N

Transkript

Na cvičení jsme si ukázali, jak se dají v počítači ukládat grafy s N
Na cvičení jsme si ukázali, jak se dají v počítači ukládat grafy s N vrcholy a M hranami. Celkem
jsme přišli na tři způsoby, přičemž ve všech předpokládáme, že vrcholy jsou očíslované od 0 do N-1
1) Seznam hran – toto uložení je paměťově velmi nenáročné (potřebujete pole velikosti M)
bohužel je také zdaleka nejméně užitečné
2) Matice sousednosti – Máme dvourozměrné pole velikosti NxN . Potom prvek [i, j] v tomto
poli je např. 1, právě když vede hrana z vrcholu i do j (v případě orientovaného grafu) a
nebo když vede hrana mezi vrcholy i a j (v případě grafu neorientovaného). Pak je ovšem
obvyklé nutné mít uloženu jedničku i na pozici j, i. Snadnou úpravou pak může takováto
matice uchovávat i orientovaný graf. Nevýhodou je paměťová složitost N2 bez ohledu na to,
kolik hran v grafu skutečně je. Dá se například dokázat, že rovinné grafy mají řádově
lineární množství hran (tzn. řádově N) a pak dochází k velkému plýtvání. Rovinné grafy
přitom mají poměrně dobré využití v praxi. Dále se příliš nehodí k procházení všech
sousedů některého vrcholu – vždy musíme projít celý řádek matice, i když vrcholů je
relativně málo.
3) Matice následníků – Máme opět dvourozměrné pole velikosti NxN. Tentokrát však prvek
[i, j] bude označovat j-tého souseda i-tého vrcholu. Jako pomocnou strukturu si vytvoříme
pole, kde na pozici k bude počet sousedů k-tého vrcholu – to vám mnohdy mnohé usnadní.
Tato struktura je velice šikovná např. k procházení do hloubky. Pokud byste navíc nepoužili
dvourozměrné pole, ale pole spojáků, stačilo by vám jen M míst v paměti. Časem se naučíte
dynamická pole, která vám této složitosti umožní dosáhnout za cenu mnohem menší
pracnosti.
Abychom hned nabitých znalostí využili, řešili jsme, kterak v grafu najít všechny komponenty
souvislosti. Ktomu stačila rekurzivní funkce, struktura popisující graf a pomocné pole označující
navštívené vrcholy. Postpu, který jsme použili se také nazývá procházení do hloubky. Vždy jsme
přišli do vrcholu, označili ho jako navštívený, rozhlédli se po všech sousedech a vždy když byl
nějaký nenavštívený, tak jsme se do něj zarekurzili. Když jsem se z rekurze vrátili, zkusili jsme
najít dalšího souseda. Evidentně tímto postupem dojdem do všech vrcholů, které jsou dostupné z
prvního vrcholu, na nějž jsme funkci zavolali. Jsme-li vyzbrojeni takovouto funkcí, je nalezení
komponent souvislosti už jen jednoduchoučkou aplikací této funkce.
Poté jsme zkusili zjistit počet všech korektních rozmístění N dam na šachovnici velikosti NxN, tj.
takových, aby se žádné dvě neohrožovali. Použít jste k tomu mohli funkci ohrozuje(platne:integer,
pole:array of integer):boolean; která jako parametr dostala počet už umístěných dam a pole s jejich
pozicemi (je snadné si rozmyslet, že v každém sloupci bude právě jedna dáma, pak nám ale stačí si
pro každý sloupeček pamatovat číslo řádku na němž dáma stojí). Řešení psát nebudu, protože to je
opět variace na generování nějaké posloupnosti čísel.

Podobné dokumenty

Bayesovské síte: pravdepodobnostní inference a aplikace

Bayesovské síte: pravdepodobnostní inference a aplikace (1) najít kliku, která obsahuje všechny její proměnné, (2) spočítat součin všech tabulek přiřazených této klice a všech tabulek v příchozích schránkách a (3) marginalizovat tabulku, pokud je to tře...

Více

Untitled

Untitled RJ 45) je propojením na Rittal CMC III. Tím je umožněno dálkové monitorování přes TCP-IP, grafické rozhraní pro obsluhu, vyhodnocení a řízení, dokumentování a připojení k systému kontroly vstupu. R...

Více

Základn´ı vzorce pro algebraické úpravy Goniometrie

Základn´ı vzorce pro algebraické úpravy Goniometrie Základnı́ vzorce pro algebraické úpravy n n n (xy)  n = xn y x = xyn y xn xm = xn+m xn = xn−m xm

Více

Grafové algoritmy

Grafové algoritmy – Neorientované – pokud ex. (u,v), existuje také (v,u) • Souvislost – graf je souvislý, jestliže pro všechny v(i) z V existuje cesta do libovolného v(j) z V, nesouvislý graf je rozdělen na komponen...

Více

Grafové algoritmy

Grafové algoritmy Grafy – Úvod - Terminologie • Graf je datová struktura, skládá se z množiny vrcholů “V” a množiny hran mezi vrcholy “E” • Počet vrcholů a hran musí být konečný a nesmí být nulový u vrcholů ani u h...

Více

Nový ICP spektrometr PRODIGY

Nový ICP spektrometr PRODIGY spektrometru, tím lepší je separace píků ve spektru. Všechny ostatní ICP spektrometry však používají starší

Více

无中生有巧立名目

无中生有巧立名目 ncNh!Q+B„d˜–v" #nÞ$h¹¿DE%°:ú!!< êh˜–&“£T˜–#$• –'vh:V(ªþM!<.NYê )=k­®u†:˜–#$hkb ‘•–—N h!Q+B„d*a+,Þ -d›j./0¿Ž7: ‘έ ®†#!²³9k¾¿N ²³2 =¨%DX:UP³1k®Óh: A(N2†®Ó‘Ρ#$_¡ 34N 5‘XQ5BCN h!‰l kl6üh¹¨%67:‘Ε –...

Více