Zobrazeno víc úloh, i když nejsou moc kategorizované
This commit is contained in:
parent
5f04de14e5
commit
b2e0ead402
1 changed files with 110 additions and 86 deletions
196
tasks.json
196
tasks.json
|
@ -40,12 +40,12 @@
|
||||||
"30-Z1-3"
|
"30-Z1-3"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-949.4910888671875,
|
-254.43450927734375,
|
||||||
-1247.3524169921875
|
1299.0439147949219
|
||||||
],
|
],
|
||||||
"taskReference": "26-Z1-3",
|
"taskReference": "26-Z1-3",
|
||||||
"title": "Zamilovaný dopis",
|
"title": "Zamilovaný dopis",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -53,15 +53,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"comment": "Hroch v jezeře - BFS či jiné prohledávání, počítání velikosti komponent v 2D poli, ",
|
"comment": "Hroch v jezeře - BFS či jiné prohledávání, počítání velikosti komponent v 2D poli, ",
|
||||||
"requires": [
|
"requires": [
|
||||||
"label-grafy"
|
"label-grafy",
|
||||||
|
"26-Z4-4"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1864.0928955078125,
|
-923.5020141601562,
|
||||||
49.330116271972656
|
1551.3793830871582
|
||||||
],
|
],
|
||||||
"taskReference": "26-Z1-4",
|
"taskReference": "26-Z1-4",
|
||||||
"title": "Hroch v jezeře",
|
"title": "Hroch v jezeře",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 12
|
"points": 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -105,12 +106,12 @@
|
||||||
"26-Z1-3"
|
"26-Z1-3"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1049.7529983520508,
|
-354.69641876220703,
|
||||||
-1200.0399169921875
|
1346.3564147949219
|
||||||
],
|
],
|
||||||
"taskReference": "26-Z2-3",
|
"taskReference": "26-Z2-3",
|
||||||
"title": "Šifrovaná zpráva",
|
"title": "Šifrovaná zpráva",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -150,12 +151,12 @@
|
||||||
"29-Z3-2"
|
"29-Z3-2"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1262.5072937011719,
|
-567.4507141113281,
|
||||||
-1104.4763488769531
|
1441.9199829101562
|
||||||
],
|
],
|
||||||
"taskReference": "26-Z3-2",
|
"taskReference": "26-Z3-2",
|
||||||
"title": "Čarodějova šifra",
|
"title": "Čarodějova šifra",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -240,7 +241,7 @@
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-929.5531616210938,
|
-929.5531616210938,
|
||||||
1412.022590637207
|
1411.2905349731445
|
||||||
],
|
],
|
||||||
"taskReference": "26-Z4-4",
|
"taskReference": "26-Z4-4",
|
||||||
"title": "Hlídači v labyrintu",
|
"title": "Hlídači v labyrintu",
|
||||||
|
@ -531,14 +532,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"id": "28-1-1",
|
"id": "28-1-1",
|
||||||
"taskReference": "28-1-1",
|
"taskReference": "28-1-1",
|
||||||
"requires": [],
|
"requires": [
|
||||||
|
"31-Z3-2"
|
||||||
|
],
|
||||||
"position": [
|
"position": [
|
||||||
2578.840576171875,
|
-842.9662780761719,
|
||||||
1147.3673400878906
|
2112.172149658203
|
||||||
],
|
],
|
||||||
"title": "Jízda na biomotorce",
|
"title": "Jízda na biomotorce",
|
||||||
"comment": "Prohledávání statového prostoru - hledání cesty v obohacneném grafu",
|
"comment": "Prohledávání statového prostoru - hledání cesty v obohacneném grafu",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -657,8 +660,8 @@
|
||||||
"comment": "hledání komponent souvislosti",
|
"comment": "hledání komponent souvislosti",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1810.1290817260742,
|
-805.9155197143555,
|
||||||
392.1524124145508
|
1901.931526184082
|
||||||
],
|
],
|
||||||
"title": "Zuzčina zvědavost",
|
"title": "Zuzčina zvědavost",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
|
@ -671,11 +674,11 @@
|
||||||
"comment": "hledání podřetězce",
|
"comment": "hledání podřetězce",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-909.1823806762695,
|
-189.9454116821289,
|
||||||
-1071.67529296875
|
1464.5558776855469
|
||||||
],
|
],
|
||||||
"title": "Před muzeem",
|
"title": "Před muzeem",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 8
|
"points": 8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -952,15 +955,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"comment": "Zuzčin výlet — DFS (topologické pořadí)",
|
"comment": "Zuzčin výlet — DFS (topologické pořadí)",
|
||||||
"requires": [
|
"requires": [
|
||||||
"label-grafy-pracovni-poznamka"
|
"label-grafy-pracovni-poznamka",
|
||||||
|
"31-Z3-3"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-2137.3594970703125,
|
-1133.1459350585938,
|
||||||
232.75035858154297
|
1742.5294723510742
|
||||||
],
|
],
|
||||||
"taskReference": "29-Z1-4",
|
"taskReference": "29-Z1-4",
|
||||||
"title": "Zuzčin výlet",
|
"title": "Zuzčin výlet",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 12
|
"points": 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1001,8 +1005,8 @@
|
||||||
"comment": "Petr v říši divů — grafy - prohledávání (rozpad na komponenty)",
|
"comment": "Petr v říši divů — grafy - prohledávání (rozpad na komponenty)",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1968.5974578857422,
|
-964.3838958740234,
|
||||||
405.43651580810547
|
1915.2156295776367
|
||||||
],
|
],
|
||||||
"title": "Petr v říši divů",
|
"title": "Petr v říši divů",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
|
@ -1047,12 +1051,12 @@
|
||||||
"label-retezce"
|
"label-retezce"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1152.7578887939453,
|
-457.70130920410156,
|
||||||
-1152.6983337402344
|
1393.697998046875
|
||||||
],
|
],
|
||||||
"taskReference": "29-Z3-2",
|
"taskReference": "29-Z3-2",
|
||||||
"title": "Písemka z angličtiny",
|
"title": "Písemka z angličtiny",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1074,13 +1078,15 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"taskReference": "29-Z3-4",
|
"taskReference": "29-Z3-4",
|
||||||
"comment": "Zdobení stromečku — grafy - prohledávání, hledání kružnice v grafu, zmateně zadané",
|
"comment": "Zdobení stromečku — grafy - prohledávání, hledání kružnice v grafu, zmateně zadané",
|
||||||
"requires": [],
|
"requires": [
|
||||||
|
"31-Z3-3"
|
||||||
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1763.2243347167969,
|
-783.9841613769531,
|
||||||
181.82473754882812
|
1703.4959106445312
|
||||||
],
|
],
|
||||||
"title": "Zdobení stromečku",
|
"title": "Zdobení stromečku",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 12
|
"points": 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1090,8 +1096,8 @@
|
||||||
"comment": "Šíření viru — vopruz načítat vstup, přímočaré kvadratické řešení, trochu důmyslnější optimální, podhodnocená as fuck, šíření viru v grafu",
|
"comment": "Šíření viru — vopruz načítat vstup, přímočaré kvadratické řešení, trochu důmyslnější optimální, podhodnocená as fuck, šíření viru v grafu",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1700.1787109375,
|
-695.9651489257812,
|
||||||
235.389404296875
|
1745.1685180664062
|
||||||
],
|
],
|
||||||
"title": "Šíření viru",
|
"title": "Šíření viru",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
|
@ -1147,14 +1153,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"id": "30-1-4",
|
"id": "30-1-4",
|
||||||
"taskReference": "30-1-4",
|
"taskReference": "30-1-4",
|
||||||
"requires": [],
|
"requires": [
|
||||||
|
"31-Z3-2"
|
||||||
|
],
|
||||||
"position": [
|
"position": [
|
||||||
2427.345458984375,
|
-1071.9327087402344,
|
||||||
1017.5477600097656
|
2107.305938720703
|
||||||
],
|
],
|
||||||
"title": "Cesta v bunkru",
|
"title": "Cesta v bunkru",
|
||||||
"comment": "Hledání cesty v hilbertově křivce",
|
"comment": "Hledání cesty v hilbertově křivce",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 15
|
"points": 15
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1248,12 +1256,14 @@
|
||||||
"taskReference": "30-Z1-3",
|
"taskReference": "30-Z1-3",
|
||||||
"title": "Petrovo luštění zprávy",
|
"title": "Petrovo luštění zprávy",
|
||||||
"comment": "Hledání nejčastějšího výskytu ",
|
"comment": "Hledání nejčastějšího výskytu ",
|
||||||
"requires": [],
|
"requires": [
|
||||||
"position": [
|
"31-Z1-1"
|
||||||
-835.6846160888672,
|
|
||||||
-1304.6323547363281
|
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"position": [
|
||||||
|
-218.60426330566406,
|
||||||
|
1241.7639770507812
|
||||||
|
],
|
||||||
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1264,8 +1274,8 @@
|
||||||
"comment": "Sousednost v grafu",
|
"comment": "Sousednost v grafu",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1936.3944702148438,
|
-932.180908203125,
|
||||||
352.7490768432617
|
1862.528190612793
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"points": 12
|
"points": 12
|
||||||
|
@ -1278,10 +1288,10 @@
|
||||||
"comment": "Trivka, projít string a skippovat duplikáty",
|
"comment": "Trivka, projít string a skippovat duplikáty",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-967.7416839599609,
|
-272.6851043701172,
|
||||||
-1144.6150207519531
|
1401.7813110351562
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 8
|
"points": 8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1352,10 +1362,10 @@
|
||||||
"comment": "Výroba palindromu",
|
"comment": "Výroba palindromu",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1076.1672668457031,
|
-381.1106872558594,
|
||||||
-1079.604751586914
|
1466.7915802001953
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1410,8 +1420,8 @@
|
||||||
"comment": "Provházení bludiště",
|
"comment": "Provházení bludiště",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-2085.289993286133,
|
-1081.076431274414,
|
||||||
352.05638885498047
|
1861.8355026245117
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"points": 10
|
"points": 10
|
||||||
|
@ -1424,8 +1434,8 @@
|
||||||
"comment": "ProhledávánI grafu",
|
"comment": "ProhledávánI grafu",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-1786.307373046875,
|
-782.0938110351562,
|
||||||
334.5788803100586
|
1844.3579940795898
|
||||||
],
|
],
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"points": 10
|
"points": 10
|
||||||
|
@ -1518,11 +1528,11 @@
|
||||||
"comment": "úloha s odčítáním času",
|
"comment": "úloha s odčítáním času",
|
||||||
"title": "Zuzka a poník",
|
"title": "Zuzka a poník",
|
||||||
"position": [
|
"position": [
|
||||||
-1190.2212142944336,
|
-332.0081024169922,
|
||||||
-1046.9499435424805
|
1165.5375747680664
|
||||||
],
|
],
|
||||||
"taskReference": "31-Z1-1",
|
"taskReference": "31-Z1-1",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 8
|
"points": 8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1530,15 +1540,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ",
|
"comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ",
|
||||||
"requires": [
|
"requires": [
|
||||||
"label-grafy-pracovni-poznamka"
|
"label-grafy-pracovni-poznamka",
|
||||||
|
"31-Z3-3"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1815.673828125,
|
-866.1637573242188,
|
||||||
261.21248626708984
|
1792.397315979004
|
||||||
],
|
],
|
||||||
"taskReference": "31-Z1-2",
|
"taskReference": "31-Z1-2",
|
||||||
"title": "Ukradený jezdec",
|
"title": "Ukradený jezdec",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1634,11 +1645,11 @@
|
||||||
"comment": "triviální - zapamatování stringů (vybírání rýmů)",
|
"comment": "triviální - zapamatování stringů (vybírání rýmů)",
|
||||||
"requires": [],
|
"requires": [],
|
||||||
"position": [
|
"position": [
|
||||||
-788.6613998413086,
|
-162.3399658203125,
|
||||||
-1213.2949523925781
|
1347.7179565429688
|
||||||
],
|
],
|
||||||
"title": "Tvůrčí krize",
|
"title": "Tvůrčí krize",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 8
|
"points": 8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1646,15 +1657,16 @@
|
||||||
"type": "open-data",
|
"type": "open-data",
|
||||||
"comment": "DFS (hledání cesty v grafu po písmenech)",
|
"comment": "DFS (hledání cesty v grafu po písmenech)",
|
||||||
"requires": [
|
"requires": [
|
||||||
"label-grafy-pracovni-poznamka"
|
"label-grafy-pracovni-poznamka",
|
||||||
|
"29-Z1-4"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-2081.4124755859375,
|
-1077.1989135742188,
|
||||||
290.51927947998047
|
1800.2983932495117
|
||||||
],
|
],
|
||||||
"taskReference": "31-Z3-2",
|
"taskReference": "31-Z3-2",
|
||||||
"title": "Zámek obrazovky",
|
"title": "Zámek obrazovky",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1666,12 +1678,12 @@
|
||||||
"label-grafy"
|
"label-grafy"
|
||||||
],
|
],
|
||||||
"position": [
|
"position": [
|
||||||
-1951.4982299804688,
|
-955.0145263671875,
|
||||||
81.33769989013672
|
1622.0362014770508
|
||||||
],
|
],
|
||||||
"taskReference": "31-Z3-3",
|
"taskReference": "31-Z3-3",
|
||||||
"title": "Stáda hrochů",
|
"title": "Stáda hrochů",
|
||||||
"hidden": true,
|
"hidden": false,
|
||||||
"points": 10
|
"points": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -2191,8 +2203,8 @@
|
||||||
"title": "Grafy",
|
"title": "Grafy",
|
||||||
"htmlContent": "<h4>Grafy</h4><p>S nějakými grafy jste se již možná potkali, ale tento pojem je bohužel docela přetěžovaný. Jedním jeho významem jsou „koláčové grafy“ a jiné další diagramy znázorňující nějaký poměr (ať už to jsou výsledky voleb, nebo poměr lidí, kteří sledovali v televizi Večerníček).</p><p>Další význam můžeme nalézt v analytické matematice, kde se potkáme s grafy průběhu nějakých funkcí. My však nemáme na mysli ani jedno z výše zmíněných, teď se budeme bavit o <i>kombinatorických grafech</i>.</p><p>Grafem tedy máme na mysli nějakou množinu objektů, říkejme jim <i>vrcholy</i>, a nějaké vztahy mezi nimi. Tyto vztahy nazýváme <i>hranami</i> a jsou vyjádřené dvojicemi vrcholů, mezi kterými vedou. Ukázku takového grafu vidíme třeba na následujícím obrázku.</p><figure class=\"image\"><img src=\"https://ksp.mff.cuni.cz/kucharky/zakladni-algoritmy/zakladni_algoritmy-3.png\" alt=\"Graf\"></figure><p>Jako praktickou ukázku grafu si můžeme například představit silniční síť nějakého státu: vrcholy budou města a hrany budou silnice, které mezi nimi vedou.</p><p>Občas se můžete setkat s pojmem <i>souvislý</i> graf. Ten znamená jen to, že mezi každými dvěma vrcholy existuje nějaká cesta. Pokud tomu tak není, je graf <i>nesouvislý</i> a dá se rozložit na několik menších grafů, které již souvislé jsou a říká se jim <i>komponenty souvislosti</i>.</p><p>Samotný graf poté můžeme doplnit tím, že si v každém vrcholu nebo na každé hraně budeme pamatovat nějakou hodnotu (například cenu nejlevnějšího benzínu ve městech a délku v kilometrech na silnicích). Pamatování si hodnot ve vrcholech je docela obvyklá technika a nemá speciální název, ale pokud budeme mít graf, který si pamatuje hodnoty na hranách, budeme o něm mluvit jako o <i>ohodnoceném grafu</i>.</p><p>Další možnou úpravou je, že každá hrana povede jen jedním směrem (jednosměrné silnice), takovým grafům říkáme <i>orientované</i> (pokud pak v orientovaném grafu chceme silnici oběma směry, prostě do něj přidáme dvě hrany, jednu v každém směru).</p><p>Poslední, co nám schází k praktickému použití grafů, je naučit se, jak je reprezentovat v počítači. Existuje několik možností (v popisech bude n značit počet vrcholů, m počet hran):</p><ul><li><strong>Seznam sousedů</strong> – vrcholy grafu budeme mít uložené v poli a u každého vrcholu budeme mít (spojový) seznam čísel dalších vrcholů, do kterých z aktuálního vrcholu vede hrana. Zabírá místo O(n+m) a hodí se pro řídké grafy (tedy grafy, kde je m řádově stejné jako n).</li><li><strong>Matice sousednosti</strong> – tabulka n×n, kde na souřadnicích [i,j] je jednička (nebo jiná hodnota, v případě ohodnoceného grafu), pokud z i do j vede hrana, a nula, pokud tam hrana není (u neorientovaných grafů je navíc matice symetrická – je jedno, jestli vezmeme [i,j] nebo [j,i]). Hodí se pro husté grafy, kde m~n2.</li><li><strong>Matice incidence</strong> – řádky reprezentují vrcholy, sloupce hrany. V každém sloupci jsou právě dvě jedničky – indexy vrcholů, mezi kterými hrana vede. Zabírá však O(mn) a její použití bývá dost neohrabané, takže je většinou lepší dát přednost jiné reprezentaci grafu. Je ale dobré o ní vědět.</li></ul><p>Grafy jsou velmi široké téma. Můžeme hledat jejich minimální kostry, můžeme v nich hledat nejkratší cesty či skrze ně pouštět pod tlakem vodu. Více o nich si tedy můžete přečíst v některé z našich specializovaných grafových kuchařek, které odkazujeme z našeho <a href=\"https://ksp.mff.cuni.cz/kucharky/\">kuchařkového rozcestníku</a>.</p>",
|
"htmlContent": "<h4>Grafy</h4><p>S nějakými grafy jste se již možná potkali, ale tento pojem je bohužel docela přetěžovaný. Jedním jeho významem jsou „koláčové grafy“ a jiné další diagramy znázorňující nějaký poměr (ať už to jsou výsledky voleb, nebo poměr lidí, kteří sledovali v televizi Večerníček).</p><p>Další význam můžeme nalézt v analytické matematice, kde se potkáme s grafy průběhu nějakých funkcí. My však nemáme na mysli ani jedno z výše zmíněných, teď se budeme bavit o <i>kombinatorických grafech</i>.</p><p>Grafem tedy máme na mysli nějakou množinu objektů, říkejme jim <i>vrcholy</i>, a nějaké vztahy mezi nimi. Tyto vztahy nazýváme <i>hranami</i> a jsou vyjádřené dvojicemi vrcholů, mezi kterými vedou. Ukázku takového grafu vidíme třeba na následujícím obrázku.</p><figure class=\"image\"><img src=\"https://ksp.mff.cuni.cz/kucharky/zakladni-algoritmy/zakladni_algoritmy-3.png\" alt=\"Graf\"></figure><p>Jako praktickou ukázku grafu si můžeme například představit silniční síť nějakého státu: vrcholy budou města a hrany budou silnice, které mezi nimi vedou.</p><p>Občas se můžete setkat s pojmem <i>souvislý</i> graf. Ten znamená jen to, že mezi každými dvěma vrcholy existuje nějaká cesta. Pokud tomu tak není, je graf <i>nesouvislý</i> a dá se rozložit na několik menších grafů, které již souvislé jsou a říká se jim <i>komponenty souvislosti</i>.</p><p>Samotný graf poté můžeme doplnit tím, že si v každém vrcholu nebo na každé hraně budeme pamatovat nějakou hodnotu (například cenu nejlevnějšího benzínu ve městech a délku v kilometrech na silnicích). Pamatování si hodnot ve vrcholech je docela obvyklá technika a nemá speciální název, ale pokud budeme mít graf, který si pamatuje hodnoty na hranách, budeme o něm mluvit jako o <i>ohodnoceném grafu</i>.</p><p>Další možnou úpravou je, že každá hrana povede jen jedním směrem (jednosměrné silnice), takovým grafům říkáme <i>orientované</i> (pokud pak v orientovaném grafu chceme silnici oběma směry, prostě do něj přidáme dvě hrany, jednu v každém směru).</p><p>Poslední, co nám schází k praktickému použití grafů, je naučit se, jak je reprezentovat v počítači. Existuje několik možností (v popisech bude n značit počet vrcholů, m počet hran):</p><ul><li><strong>Seznam sousedů</strong> – vrcholy grafu budeme mít uložené v poli a u každého vrcholu budeme mít (spojový) seznam čísel dalších vrcholů, do kterých z aktuálního vrcholu vede hrana. Zabírá místo O(n+m) a hodí se pro řídké grafy (tedy grafy, kde je m řádově stejné jako n).</li><li><strong>Matice sousednosti</strong> – tabulka n×n, kde na souřadnicích [i,j] je jednička (nebo jiná hodnota, v případě ohodnoceného grafu), pokud z i do j vede hrana, a nula, pokud tam hrana není (u neorientovaných grafů je navíc matice symetrická – je jedno, jestli vezmeme [i,j] nebo [j,i]). Hodí se pro husté grafy, kde m~n2.</li><li><strong>Matice incidence</strong> – řádky reprezentují vrcholy, sloupce hrany. V každém sloupci jsou právě dvě jedničky – indexy vrcholů, mezi kterými hrana vede. Zabírá však O(mn) a její použití bývá dost neohrabané, takže je většinou lepší dát přednost jiné reprezentaci grafu. Je ale dobré o ní vědět.</li></ul><p>Grafy jsou velmi široké téma. Můžeme hledat jejich minimální kostry, můžeme v nich hledat nejkratší cesty či skrze ně pouštět pod tlakem vodu. Více o nich si tedy můžete přečíst v některé z našich specializovaných grafových kuchařek, které odkazujeme z našeho <a href=\"https://ksp.mff.cuni.cz/kucharky/\">kuchařkového rozcestníku</a>.</p>",
|
||||||
"position": [
|
"position": [
|
||||||
-853.4704818725586,
|
-809.2669906616211,
|
||||||
1209.9252662658691
|
1160.4436988830566
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -2353,10 +2365,10 @@
|
||||||
"title": "Grafy",
|
"title": "Grafy",
|
||||||
"rotationAngle": 342,
|
"rotationAngle": 342,
|
||||||
"position": [
|
"position": [
|
||||||
-1931.8012084960938,
|
-1025.697265625,
|
||||||
21.015724182128906
|
1579.5523328781128
|
||||||
],
|
],
|
||||||
"hidden": true
|
"hidden": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "label-grafy-pracovni-poznamka",
|
"id": "label-grafy-pracovni-poznamka",
|
||||||
|
@ -2368,8 +2380,8 @@
|
||||||
"title": "Grafy, ale neuspořádané",
|
"title": "Grafy, ale neuspořádané",
|
||||||
"htmlContent": "<p>undefined</p>",
|
"htmlContent": "<p>undefined</p>",
|
||||||
"position": [
|
"position": [
|
||||||
-1968.723388671875,
|
-972.8342895507812,
|
||||||
166.26753997802734
|
1705.182228088379
|
||||||
],
|
],
|
||||||
"hidden": true
|
"hidden": true
|
||||||
},
|
},
|
||||||
|
@ -2381,10 +2393,10 @@
|
||||||
"title": "Textové řetězce",
|
"title": "Textové řetězce",
|
||||||
"rotationAngle": 326,
|
"rotationAngle": 326,
|
||||||
"position": [
|
"position": [
|
||||||
-1087.5191802978516,
|
-392.4626007080078,
|
||||||
-1245.466796875
|
1300.9295349121094
|
||||||
],
|
],
|
||||||
"hidden": true
|
"hidden": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "label-trizeni",
|
"id": "label-trizeni",
|
||||||
|
@ -2434,6 +2446,18 @@
|
||||||
],
|
],
|
||||||
"hidden": true
|
"hidden": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "lbl-pokrocile-grafy",
|
||||||
|
"type": "label",
|
||||||
|
"comment": "...",
|
||||||
|
"requires": [],
|
||||||
|
"title": "Pokročilejší grafy",
|
||||||
|
"position": [
|
||||||
|
-969.0080337524414,
|
||||||
|
2068.4594764709473
|
||||||
|
],
|
||||||
|
"hidden": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "placeholder-kurz-programovani",
|
"id": "placeholder-kurz-programovani",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
|
|
Reference in a new issue