Ma pistike-gányolás közben beleütköztem egy problémába, amit csak nagyon rondán tudtam megoldani. A probléma általánosítása a következő:
Legyen A egy véges, nemüres halmaz, melynek bármely két eleme összemérhető. Soroljuk fel ennek a halmaznak az elemeit az összes lehetséges módon; éspedig úgy, hogy minden felsorolásban minden elem részt vegyen.
Intuitíve érzem, hogy erre létezik valami igazán egyszerű algoritmus, de sehogysem tudom megtalálni. Elővettem már a faktoriális definícióját, nézegettem az elemszám oszthatóságait, meg mindent, de hiányzik az "isteni" szikra. Azt szeretném kérni, hogy NE oldjátok meg helyettem a feladatot, csak adjatok valami ötletet, ami a lehető legelegánsabb megoldás első lépésére vezet rá. Köszönöm!
-------------------------------
A megoldás: rekurzió, ahogyan az első válaszban le van írva. Annyira végtelenül egyszerű, hogy talán pont emiatt nem is gondoltam rá.
- 5231 megtekintés
Hozzászólások
A triviális megoldás egy rekurzív algoritmus: egy N elemű halmaz összes lehetséges variációja az N elem és mindegyik elemehez a megfelelő N-1 elemű halmaz összes lehetséges variációja.
pl.: f({1,2,3}={[1, f({2,3})], [2, f({1,3})], [3, f({1,2})]}={[1, 2, f({3})], [1, 3, f({2})], [2, 1, f({3}], [2, 3, f({1})], [3, 1, f({2})], [3, 2, f({1})]}={[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]}
BlackY
- A hozzászóláshoz be kell jelentkezni
És tényleg. Köszönöm!
- A hozzászóláshoz be kell jelentkezni
A kulcsszó: permutáció. Van rá ezer meg egy algoritmus, biztos találsz pszeudokóddal együtt, sőt, tetszőleges programnyelvben előre megírva.
- A hozzászóláshoz be kell jelentkezni
épp az a lényeg, hogy nem akarom elolvasni a megoldást, hanem rá akarok jönni magamtól. :)
- A hozzászóláshoz be kell jelentkezni
Hát akkor veszel hat babszemet (lehetőleg fehéret), az elsőre azt írod filctollal, hogy "1", a másodikra azt, hogy "2", és így tovább, egészen hatig, aztán elkezded rakosgatni őket... :)
- A hozzászóláshoz be kell jelentkezni
nekem hirtelen ez ugrott be, csak gyors tipp: http://hu.wikipedia.org/wiki/Kombinatorika
- A hozzászóláshoz be kell jelentkezni
Legyen A egy véges, nemüres halmaz, melynek bármely két eleme összemérhető. Soroljuk fel ennek a halmaznak az elemeit az összes lehetséges módon; éspedig úgy, hogy minden felsorolásban minden elem részt vegyen.
Mondjuk tényleg eléggé sikerült elbonyolítanod a permutáció fogalmát (tizedikes - max. tizenegyedikes - gimis anyag)... Azt nem tudom, ebben a kontextusban mit akar jelenteni az, hogy bármely két eleme összemérhető, de szerintem te sem... :)
- A hozzászóláshoz be kell jelentkezni
Nem értesz. Tudom, mi az a permutáció, csak erre a feladatra nem sikerült _egyszerű_ algoritmust készítenem. (ergo nagyon csúnyán oldottam meg a speciális feladatot, ami előkerült)
Összemérhetőség: vegyünk egy halmazt, aminek az elemei a következők: 1, 2, 3, 4, bálna. Tessék particionálni aszerint, hogy melyik az, amelyiknél bármelyik elem kisebb vagy egyenlő. :) (ez a példa így persze nem precíz)
- A hozzászóláshoz be kell jelentkezni
vegyünk egy halmazt, aminek az elemei a következők: 1, 2, 3, 4, bálna
Miért nem ló? BTW mondd már meg, hogy a 4 hogyan nem mérhető össze a bálnával...
- A hozzászóláshoz be kell jelentkezni
Valahogyan így kellett volna kezdened: Legyen A egy nemüres halmaz, 'a' és 'b' pedig eleme A-nak. Azt mondjuk, hogy 'a' összemérhető 'b'-vel, ha ...
A pontozott részt természetesen neked kell megmondanod. Gyanítom, hogy valami új, a matematikában eddig nem használt fogalmat kellene alkotnod (halmaz elemeinek összemérhetősége), de igazából nem, mert te a rendezésre gondolsz.
- A hozzászóláshoz be kell jelentkezni