Bludiště - jak vytvořit algoritmus?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Numeriprimi
nováček
Příspěvky: 10
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Bludiště - jak vytvořit algoritmus?

Příspěvekod Numeriprimi » 11 zář 2012 21:54

Zdravím.
Máte určité bludiště- množinu bodů v rovině - definovaný střed těchto bodů a poloměr.
Jste uprostřed, opět definice střed, poloměr, a potřebujete se dostat ven nejkratší možnou cestou.

Jak vytvořit algoritmus?
Prosím případně o popis jak pro úplné trdlo, potrvá mi tomu porozumět.

Mockrát děkuji.
Naposledy upravil(a) Ltb dne 11 zář 2012 22:01, celkem upraveno 1 x.
Důvod: Úprava nadpisu

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod CZechBoY » 11 zář 2012 23:00

pudu jednou cestou, když nebude slepá tak pudu dál a budu se snažit jít pořád z kruhu
logický ne? :D
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Numeriprimi
nováček
Příspěvky: 10
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod Numeriprimi » 12 zář 2012 04:37

No tak to mi je celkem jasné... Ale horší je pro mě je to přenést do algoritmu. Matematiku zvládám, ale s tímhle nemám moc zkušeností, tak nevím, jaké funkce využít.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod faraon » 12 zář 2012 08:26

Ty body jsou místa kam můžeš skákat? Podle jakých pravidel? Kdyby to bylo libovolně, tak by stačilo najít bod ležící zvenku nejblíž tomu poloměru a skočit rovnou na něj! Takže Pythagorova věta:

Kód: Vybrat vše

sqrt((xi-x0)^2 + (yi-y0)^2)


Nebo je to naopak, že na ty body nesmíš vstoupit a musíš prokličkovat mezi nimi?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Numeriprimi
nováček
Příspěvky: 10
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod Numeriprimi » 12 zář 2012 13:40

Nene, nejspíš jsem to špatně popsala... Neskákat, ale prokličkovat :-) Vymanipulovat se mezi nimi, žádné nějaké "naklánění" apod.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod faraon » 12 zář 2012 14:40

Takže ty body jsou různě velká "kolečka", a ty musíš s dalším kolečkem mezi nimi nějak projet ven. Teď to mám správně?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Numeriprimi
nováček
Příspěvky: 10
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod Numeriprimi » 12 zář 2012 15:55

Ano, přesně takto to myslím :-) A pokud možno nejkratší možnou cestou.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod faraon » 12 zář 2012 16:39

Tak zjistit jestli projdeš mezerou nebude tak těžké, ale vymysli jak spočítat délku té dráhy včetně obloučků:
Numeriprimi.png
Numeriprimi.png (5.7 KiB) Zobrazeno 914 x

Asi by bylo jednodušší přičíst poloměr toho utíkajícího bodu ke všem ostatním a pohybovat se po tečnách.

A další otázka - jak poznám že už jsem "venku" z toho bludiště?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Numeriprimi
nováček
Příspěvky: 10
Registrován: září 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod Numeriprimi » 12 zář 2012 20:44

Ještě dodám, že věc se má tak, že překážky mohou mít různý poloměr... Ale to snad nebude problém?

K otázce... Sama nevím. Nejspíš jen najít algoritmus, tak se z toho "vydrápat".

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod faraon » 14 zář 2012 10:01

Různý poloměr nevadí, stejně se ty puntíky budou zpracovávat postupně. Tak postup bych navrhoval asi takhle:

1. K poloměru všech překážek přičíst poloměr toho cestovatele. Šlo by to i během hledání, ale je to počítání navíc, a složitější vzorečky. Takhle pak stačí pracovat s bodem s nulovou velikostí.

2. Z výchozího bodu brát postupně všechny překážky, a k nim vypočítat tečny k součtu průměrů (pozor, každá má dvě!).

3. Pokud tečna neprotíná žádnou jinou překážku (zase oba průměry), tak se hledá společná tečna k další překážce (rekurze na bod 2.), dokud se cestovatel nedostane na hranici N-úhelníku vytvořeného středy všech překážek. To je ta černá čára kolem.

4. V tu chvíli kdy je na hranici (průnik kružnice se spojnicí středů) se sečtená délka dráhy porovná s nejkratší doposud nalezenou, a pokud je kratší, tak se nahradí.

Ale jak tohle všechno spočítat se mě fakt neptej, kdysi na střední jsme nějaké protínání počítali, ale to je asi tak všechno co si z toho pamatuji ;-)
Ta dráha by se dala ukládat do pole nebo do spojového seznamu.

Numeriprimi2.png
Numeriprimi2.png (4.53 KiB) Zobrazeno 914 x
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Bludiště - jak vytvořit algoritmus?

Příspěvekod faraon » 16 zář 2012 06:38

Zapomněl jsem jednu důležitou věc, takže:

5. Když dojdeš na hranici, nebo do slepé uličky, tak se vrátíš o jednu úroveň zpátky a vyzkoušíš další tečnu, tak dlouho dokud tam nějaké neotestované jsou.

Nakonec, po vyčerpání všech možností, budeš zase stát na výchozím bodě, a budeš mít zaznamenanou nejkratší možnou cestu na hranici té plochy. Pokud bude víc stejně dlouhých, tak jen tu první nalezenou.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Nelze vytvořit oddíl o velikosti volného místa na HDD Příloha(y)
    od Ddwarf » 25 led 2025 07:31 » v Windows 11, 10, 8...
    7
    2799
    od atari Zobrazit poslední příspěvek
    26 led 2025 09:16
  • VWware Workstation Player-nelze vytvořit virt.Windows. Příloha(y)
    od ski1961 » 26 srp 2024 14:46 » v Programy ke stažení
    6
    5053
    od ski1961 Zobrazit poslední příspěvek
    26 srp 2024 15:48

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti