Kezdőoldal » Számítástechnika » Programozás » Backtrack (visszalépéses)...

Backtrack (visszalépéses) algoritmus segítség, magyarázat?

Figyelt kérdés

Jövő hétre van egy szorgalmi beadandó lehetőség (C#).

A lényeg a programban van random számú doboz; a, b, c oldalai vannak. Ezek is randomok, 5-től 61-ig.

Az első program az volt, hogy csináltunk egy matrjoska sorozatot az első doboztól kezdve, tehát kilistázni, kiírni azokat sorba amik beleférnek az elsőbe, aztán így tovább végig.

Utána ugyan ez, csak a dobozokat forgatni is lehet.


A feladat pedig az lenne, hogy meg kell keresni és kiírni a leghosszabb sorozatot, de ugye a forgatás miatt nem elég az amelyiknek a legnagyobb oldalai vannak. Tanárunk mondott egy segítséget, hogy backtrack algoritmust kell használni.


Na, ez pontosan, konyhanyelven hogy is működik?

Köszönöm a válaszokat!


2019. febr. 7. 15:52
1 2
 1/14 anonim ***** válasza:

Ha már szorgalmi, elsőként pl. ezt olvasd el:

[link]

2019. febr. 7. 16:33
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
0%
Én mondjuk ebből egy szót se értek.
2019. febr. 7. 18:47
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:

Lényegében azt kell csinálnia a backtrackingnak, hogy elkezdi bepróbálni a dobozokat, ha elakadt a bepakolás akkor visszalép egyet és bepróbálja az utolsó lép helyére mást. Ezt végigpróbálgatja, majd még egyet visszalép és a helyett máshogy dönt és úgy végigpróbálgatja stb stb.

Értelem szerűen ha egyből megvan akkor kész is. Meg egyéb sarokesetekre is fel kell készülni.

Értelem szerűen egy rekurzív algoritmus ez.

2019. febr. 7. 21:55
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
53%

"Értelem szerűen egy rekurzív algoritmus ez."


Vagy nem.. :))

2019. febr. 8. 05:15
Hasznos számodra ez a válasz?
 5/14 anonim ***** válasza:

@05:15

Ezt kifejtenéd? Ez így egy nagy nulla volt ideírni, semmi indok semmi csak idehánytad.

2019. febr. 8. 12:45
Hasznos számodra ez a válasz?
 6/14 anonim ***** válasza:

Nem nagyon kell ezt kommentálni.

A rekurzió egy elég veszélyes művelet azoknál, akik nem ismerik a számítógépek architektúráját. Ezért nem is ajánlatos rekurzióra biztatni efféle emberkéket. Kivált nem olyan feladatnál, amelynek megoldástere ennyire tág.


Amellett, alap, hogy ami rekurzióval megoldható, az megoldható iteratívan is. Ergo, abszolút nem igaz az a tétel, amire hivatkoztál, hogy "értelemszerűen" rekurzió..

2019. febr. 8. 13:48
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:

"A rekurzió egy elég veszélyes művelet azoknál, akik nem ismerik a számítógépek architektúráját."


Tök mindegy, hogy Snapdragon 854, amd a6, intel core i7 stb. Nem előfeltétele a rekurzió megírásának. Régebbi rekurzív kódom is kiválóan fut újabb architektúrájú gépen, esélyem se volt hogy akkor ismerjem amikor még nem is létezett.

Azt kell tudni, hogy a rekurzió hogy működik.


Kinek mi baja lenne hogy annyira veszélyes?


"Amellett, alap, hogy ami rekurzióval megoldható, az megoldható iteratívan is. Ergo, abszolút nem igaz az a tétel, amire hivatkoztál, hogy "értelemszerűen" rekurzió.."


Értelem szerűen mert rekurzív összefüggések vannak. A probléma részproblémákra való bontása rekurzívan. Nem mondtam csak rekurzívan lehet megoldani, de máshogy bonyolultabb. Ha nem hiszed akkor kódold le a hanoi tornyait rekurzívan meg nem rekurzívan is!

2019. febr. 8. 22:17
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:

A backtraxking amúgy tipikusan nem rekurzívan van megvalósítva.

A rekurzió megva rekurzív robbanás miatt nem nagyon használható az iparban csak bizonyos optimalizációk mellett. Persze tény, hogy ezt néhány nyelv elég jól támogatja.

De aki naívan elkezd rekurzív algoritmusokat írni, majd azt valódi problémákra ráengedni, az meg fog lepődni.

2019. febr. 8. 22:23
Hasznos számodra ez a válasz?
 9/14 anonim ***** válasza:

Csak részben van igazatok. Van amikor igen is jól használható a rekurzió. Tudom van olyan probléma ahol nyersen nem éri meg a "rekurzív robbanás" miatt. Azonban az a kijelentés hogy az iparban nem használatos az tévedés. Ez tipikusan egy olyan feladat ahol jól alkalmazható. Annyira nem kell félni tőle.

Fogtam magam és implementáltam pythonban.

Csak a pszeudokódot rakom ki nyilvánosan: [link]


Legrosszabb esetbe se megy túl (jó 1-el lehet hogy igen) a rekurziós mélység a dobozok darabszámánál az én implementációmban. A számítás nem csinál olyan exponenciális robbanást az iteratívhoz képest mint például a fibonacci számok esetében.

Nem ez volt se az első, se az utolsó amit rekurzívan megcsináltam backtrack-et.

2019. febr. 9. 18:26
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:

"Legrosszabb esetbe se megy túl (jó 1-el lehet hogy igen) a rekurziós mélység a dobozok darabszámánál az én implementációmban. "

Akarom mondani a dobozok darabszámának felénél tovább nem megy legrosszabb esetben sem. (Max 1-el esetleg.)

2019. febr. 9. 18:28
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!