Ugrás a tartalomhoz

Palacsintarendezés

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
A palacsintarendezés fő művelete. A spatulával megfordítják a felső három palacsintát, az eredmény lent látható. Az égetett palacsinta-problémában a művelet után az átfordított palacsinták tetején lenne az égés, nem az aljukon.

A palacsintarendezés (pancake sorting) az a matematikai probléma, melynek során különböző méretű palacsintákból álló oszlopot nagyság szerinti sorba rendeznek oly módon, hogy az oszlopba bárhol beszúrható egy fordítólapát, és az összes fölötte lévő palacsinta megfordítható vele. A palacsintaszám (pancake number) az adott számú palacsinta rendezéséhez szükséges minimális fordítások száma. A problémát ebben a formában először Jacob E. Goodman amerikai mértanász vetette fel.[1] A rendezési probléma egy változata, melyben az egyetlen lehetséges művelet a sorozat valamely prefixumának (a karakterlánc elejétől kezdődő rész-sztringnek) megfordítása. A hagyományos rendezési algoritmusokkal ellentétben, melyeknél általában az összehasonlítások számának minimalizálására törekszenek, itt a cél a lehető legkevesebb megfordítást elvégezni. A probléma egy változata „égetett” palacsintákkal foglalkozik, melyek oldalait megkülönböztetjük (az egyik égett), és a palacsintákat nem egyszerűen nagyság szerinti sorba kell rendezni, hanem a rendezés végén az égett oldalukkal lefelé kell lenniük.

A palacsintaproblémák

[szerkesztés | forrásszöveg szerkesztése]

Az eredeti palacsintaprobléma

[szerkesztés | forrásszöveg szerkesztése]
Hat palacsintából álló oszlop. Az {5 ; 3 ; 6 ; 1 ; 4 ; 2} kiindulási állapot látható, a két hat elemű konfiguráció egyike, ami 7 manipulációt igényel (a másik a {4 ; 6 ; 2 ; 5 ; 1 ; 3}).
Palacsintaszámok
(A058986 sorozat az OEIS-ben)
1234567891011121314151617
01345789101113141516171819

Az n palacsintát tartalmazó oszlop rendezéséhez mindig elégséges, minimális átfordítások száma és (kb. és ) között van, de a pontos érték nem ismert.[2]

A legegyszerűbb palacsintarendező algoritmusnak lépésre van szüksége. Ez a kiválasztásos rendezés olyan változata, melyben a nem a helyén lévő palacsinták közül a legnagyobbat egy átfordítással a tetejére, majd egy másik átfordítással közvetlenül a helyére juttatjuk el, addig ismételve a folyamatot, míg az összes palacsinta a helyére nem kerül.

1979-ben Bill Gates és Christos Papadimitriou[3] felső korlátot igazolt. Ezt 30 évvel később -re javította a University of Texas at Dallas egyetem Hal Sudborough által vezetett kutatócsoportja.[4] (Chitturi et al., 2009[5]).

2011-ben Laurent Bulteau, Guillaume Fertin és Irena Rusu[6] bebizonyították, hogy egy adott palacsintaoszlop rendezéséhez szükséges legrövidebb átfordítás-sorozat megtalálása NP-nehéz feladat.

Az égetett palacsinta problémája

[szerkesztés | forrásszöveg szerkesztése]

Az égetett palacsinta-problémaként (burnt pancake problem) ismert változatban a palacsinták alja megégett, és a rendezés végén minden palacsintának az égett oldalával alul kell elhelyezkednie. Ebben az előjeles permutációban ha az i palacsinta égett oldalával felfelé van, akkor a permutációban az i helyén az i` negatív elem szerepel. Erre a változatra David S. Cohen (David X. Cohen) és Manuel Blum 1995-ben a következő állítást igazolták: (ahol a felső korlát csak -től válik igazzá).[7]

2008-ban egyetemi hallgatók olyan bakteriális számítógépet építettek, ami képes volt az égetett palacsinta-probléma egyszerű változatának megoldására úgy, hogy az E. coli bacilusok DNS-szakaszokat fordítottak meg az égetett palacsinták analógiájára. A DNS-molekula rendelkezik irányítással (5' és 3') és sorrenddel (promoterek a kódoló szakaszok előtt). Bár a DNS-átfordítások által képviselt számítási teljesítmény alacsony volt, egy tenyészetben a baktériumok nagy száma erősen párhuzamosítható feladatok megoldására alkalmassá teheti őket. A kísérleti elrendezésben a baktériumok akkor oldották meg a problémát, amikor antibiotikum-ellenállóvá váltak.[8]

Égetett palacsinta-számok
(A078941 sorozat az OEIS-ben)
123456789101112
14681012141517181921

Az egyforma palacsinták problémája

[szerkesztés | forrásszöveg szerkesztése]

A feladatot az indiai kenyér (csapáti vagy róti) elkészítési módja ihlette. A kiindulási állapotban az összes róti egy oszlopba van felhalmozva, majd a szakács lapáttal átfordítja őket, hogy minden róti minden oldala egy ideig a tűz közvetlen közelében sülhessen. Különböző változatok képzelhetők el: a rótikat tekinthetjük egy- vagy kétoldalasnak, megtilthatjuk, hogy ugyanahhoz a rótihoz kétszer hozzáérjünk. A probléma ezen változatát Arka Roychowdhury vizsgálta elsőként.[9]

A palacsintaprobléma karakterláncokon

[szerkesztés | forrásszöveg szerkesztése]

A fenti problémákban a palacsinták egyediek voltak, tehát az elvégzett prefix-megfordítási művelet permutáció. Karakterláncok esetében azonban a szimbólumok ismétlődhetnek, ami csökkentheti az elvégzendő prefix-megfordítási műveletek számát. Chitturi and Sudborough (2010), illetve Hurkens et al. (2007) egymástól függetlenül megmutatták, hogy két kompatibilis karakterlánc között minimális számú prefix-megfordítási művelettel történő transzformáció NP-nehéz feladat. Néhány korlátot is meghatároztak erre. Hurkens et al. pontos algoritmust adott bináris és ternáris karakterláncok rendezésére. Chitturi[10] (2011) bizonyította azt is, hogy a két kompatibilis, előjeles karakterlánc között minimális számú prefix-megfordítási művelettel történő transzformáció – ami az égetett palacsinta-probléma karakterlánc-változata – szintén NP-nehéz feladat.

Bár sokszor csak oktatási eszköznek tekintik, a palacsintarendezésnek fontos alkalmazásai vannak párhuzamos processzorhálózatok területén a processzorok között hatékony útválasztási algoritmus biztosításában.[11][12]

A probléma népszerűségét az is növelte, hogy ebben a témában jelent meg az egyedüli matematikai publikációja a Microsoft alapítójának, Bill Gatesnek (mint William Gates), Bounds for Sorting by Prefix Reversal címmel. Az 1979-ben megjelent publikációban leír egy hatékony palacsintarendező algoritmust.[3] Ráadásul a Futurama társszerzője, David X. Cohen (mint David S. Cohen) is foglalkozott az égetett palacsinta-problémával.[13]

Néhány kapcsolódó problémát is tanulmányoztak a közelmúltban, az előjeles, megfordítással történő rendezés és a megfordítással történő rendezés problémáit. Ezeknél nem csak a sztring elejétől kezdődő, prefix-megfordítást lehet végezni, hanem bármilyen karakterlánc megfordítható. Bár az előjeles esetre hatékony egzakt algoritmust sikerült találni,[14] az előjel nélkülinek még bizonyos konstans faktorral történő közelítése is nehéznek bizonyult,[15] bár polinom időben közelíthetőnek bizonyult 1,375-ös approximációs faktorral.[16]

A P3 palacsintagráf
A P4 palacsintagráf rekurzívan előállítható a P3 4 kópiájából úgy, hogy az {1, 2, 3, 4} halmaz más-más elemét fűzzük hozzá az egyes kópiákhoz.

Egy n-palacsintagráf, jelölése Pn olyan egyszerű, irányítatlan, hurokmentes gráf, melynek csúcshalmaza az 1,2,...,n számok permutációinak (sorbaállításainak) halmaza. Két permutáció között akkor húzódik él, ha az egyik tranzitív módon átvihető a másikba egy kezdőszeletének megfordításával (prefix reversal). A palacsintarendezési probléma és a palacsintagráf átmérőjének meghatározása egymással ekvivalens.[17]

Az n méretű palacsintagráf, Pn rekurzívan előállítható a Pn1 palacsintagráf n kópiájából oly módon, hogy az {1, 2, …, n} halmaz más-más elemét fűzzük hozzá az egyes kópiákhoz.

A Pn palacsintagráf reguláris, csúcsainak száma n!, fokszáma n1. Girthparamétere:

.

A Pn palacsintagráf γ(Pn) génuszáról elmondható, hogy:[18]

A palacsintagráfok számos érdekes tulajdonsággal rendelkeznek – szimmetrikus és rekurzív szerkezetük (Cayley-gráfok, ezért csúcstranzitívek), szublogaritmikus fokszámmal és átmérővel rendelkeznek és relatíve ritkák (pl. a hiperkockagráfokhoz képest), ezért a permutáló csillaggráfok mellett a párhuzamos számítógépek hálózati összeköttetéseinek modelljeként komoly érdeklődés tárgyát képezik.[18][19][20][21] Hálózati összeköttetések modelljeként tekintve a palacsintagráfokra, a gráf átmérője a kommunikációs késleltetést reprezentálja.[22][23]

Kapcsolódó sorozatok

[szerkesztés | forrásszöveg szerkesztése]
Adott n magasságú oszlopok száma, melyek rendezése k átfordítást igényel
Magasság
n
k
01234567 89101112131415
1 1
2 11
3 1221
4 136113
5 1412354820
6 1520791992811332
7 163014954313571903101635
8 17422511191428110 56115 0118520455
9 1856391227810 66638 01593 585132 69779 3795804
10 1972575396322 825106 461377 863919 3651 309 756814 67873 232
11 11090809642943 891252 7371 174 7664 126 5159 981 07314 250 4719 123 648956 3546
12 1111101099988377 937533 3973 064 78814 141 92949 337 252118 420 043169 332 213111 050 06613 032 704167
13 112132145114 556130 0961 030 5057 046 31840 309 555184 992 275639 783 4751 525 125 3572 183 056 5661 458 653 648186 874 8522001

OEIS-sorozatok a témában:

  • OEISA058986 – maximális szükséges átfordítások száma
  • OEISA067607 – a maximális átfordítást igénylő oszlopok száma (lásd fent)
  • OEISA078941 – maximális szükséges átfordítások száma az „égetett” esetben
  • OEISA078942 – szükséges átfordítások száma a rendezett „égetett oldal felül” oszlopnál
  • OEISA092113 – a fenti háromszög, soronként kiolvasva.
C#
public static void PancakeSort<T>(IList<T> arr, int cutoffValue = 2)
	where T : IComparable
{
	for (int i = arr.Count - 1; i >= 0; --i)
	{
		int pos = i;
		// Find position of max number between beginning and i
		for (int j = 0; j < i - 1; j++)
		{
			if (arr[j].CompareTo(arr[pos]) > 0)
			{
				pos = j;
			}
		}

		// is it in the correct position already? 
		if (pos == i)
		{
			continue;
		}

		// is it at the beginning of the array? If not flip array section so it is
		if (pos != 0)
		{
			Flip(arr, pos + 1);
		}

		// Flip array section to get max number to correct position    
		Flip(arr, i + 1);
	}
}

private static void Flip<T>(IList<T> arr, int n)
	where T : IComparable
{
	for (int i = 0; i < n; i++)
	{
		--n;
		T tmp = arr[i];
		arr[i] = arr[n];
		arr[n] = tmp;
	}
}
  • Ez a szócikk részben vagy egészben a Pancake sorting című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
  1. Simon Singh (2013. november 14.). "Flipping pancakes with mathematics". The Guardian. Hozzáférés: 2014. március 25..
  2. Fertin, G. and Labarre, A. and Rusu, I. and Tannier, E. and Vialette, S. (2009). Combinatorics of Genome Rearrangements. The MIT Press. ISBN 9780262062824.{{cite book}}: CS1 karbantartás: több név: szerzőfelsorolás (link)
  3. 1 2 Gates, W.; Papadimitriou, C. (1979). "Bounds for Sorting by Prefix Reversal" (PDF). Discrete Mathematics. 27: 47–57. doi:10.1016/0012-365X(79)90068-2. 2007. június 10. dátummal az eredeti (PDF) címről archiválva. Hozzáférés: 2017. július 30..
  4. "Team Bests Young Bill Gates With Improved Answer to So-Called Pancake Problem in Mathematics". University of Texas at Dallas News Center. 2008. szeptember 17. 2012. április 5. dátummal az eredeti címről archiválva. Hozzáférés: 2008. november 10.. A team of UT Dallas computer science students and their faculty adviser have improved upon a longstanding solution to a mathematical conundrum known as the pancake problem. The previous best solution, which stood for almost 30 years, was devised by Bill Gates and one of his Harvard instructors, Christos Papadimitriou, several years before Microsoft was established.
  5. Chitturi, B.; Fahle, W.; Meng, Z.; Morales, L.; Shields, C. O.; Sudborough, I. H.; Voit, W. (2009. augusztus 31.). "An (18/11)n upper bound for sorting by prefix reversals". Theoretical Computer Science. Graphs, Games and Computation: Dedicated to Professor Burkhard Monien on the Occasion of his 65th Birthday. 410 (36): 3372–3390. doi:10.1016/j.tcs.2008.04.045.
  6. Bulteau, Laurent; Fertin, Guillaume; Rusu, Irena. "Pancake Flipping Is Hard". Journal of Computer and System Sciences. 81 (8): 1556–1574. arXiv:1111.0434v1. doi:10.1016/j.jcss.2015.02.003.
  7. David S. Cohen, Manuel Blum: On the problem of sorting burnt pancakes. In: Discrete Applied Mathematics. 61, Nr. 2, 1995, S. 105–120. DOI:10.1016/0166-218X(94)00009-3.
  8. Haynes, Karmella A; Broderick, Marian L; Brown, Adam D; Butner, Trevor L; Dickson, James O; Harden, W Lance; Heard, Lane H; Jessen, Eric L; Malloy, Kelly J; Ogden, Brad J; Rosemond, Sabriya; Simpson, Samantha; Zwack, Erin; Campbell, A Malcolm; Eckdahl, Todd T; Heyer, Laurie J; Poet, Jeffrey L (2008). "Engineering bacteria to solve the Burnt Pancake Problem". Journal of Biological Engineering. 2: 8. doi:10.1186/1754-1611-2-8. PMC 2427008. PMID 18492232.{{cite journal}}: CS1 karbantartás: jelöletlen szabad DOI (link)
  9. https://arkaroychowdhury1.wordpress.com/portfolio/flippingpancakes/
  10. "A NOTE ON COMPLEXITY OF GENETIC MUTATIONS". Discrete Mathematics, Algorithms and Applications. 03 (03). doi:10.1142/S1793830911001206.
  11. Gargano, L.; Vaccaro, U.; Vozella, A. (1993). "Fault tolerant routing in the star and pancake interconnection networks". Information Processing Letters. 45 (6): 315–320. doi:10.1016/0020-0190(93)90043-9. MR 1216942..
  12. Kaneko, K.; Peng, S. (2006). "Disjoint paths routing in pancake graphs". Proceedings of Seventh International Conference on Parallel and Distributed Computing, Applications and Technologies, 2006 (PDCAT '06). 254–259. o. doi:10.1109/PDCAT.2006.56. ISBN 0-7695-2736-1..
  13. Cohen D.S.; Blum, M. (1995). "On the problem of sorting burnt pancakes". Discrete Applied Mathematics. 61 (2): 105. doi:10.1016/0166-218X(94)00009-3.
  14. Kaplan, H., Shamir, R. and Tarjan, R.E. "Faster and Simpler Algorithm for Sorting Signed Permutations by Reversals." Proc. 8th ACM-SIAM SODA (1997), 178-187, 1997.
  15. Berman, P. and Karpinski, M. "On Some Tighter Inapproximability Results." Proc. 26th ICALP (1999), LNCS 1644, Springer, 200-209, 1999.
  16. Berman, P., Karpinski M. and Hannenhalli, S., "1.375-Approximation Algorithms for Sorting by Reversals." Proc. 10th ESA (2002), LNCS 2461, Springer, 200-210, 2002.
  17. Asai, Shogo; Kounoike, Yuusuke; Shinano, Yuji; Kaneko, Keiichi (2006. szeptember 1.). "Computing the Diameter of 17-Pancake Graph Using a PC Cluster". Euro-Par 2006 Parallel Processing: 12th International Euro-Par Conference. doi:10.1007/11823285_117. {{cite journal}}: Cite has empty unknown parameter: |1= (súgó)
  18. 1 2 Nguyen, Quan; Bettayeb, Said (2009. november 5.). "On the Genus of Pancake Network" (PDF). The International Arab Journal of Information Technology. 8 (3): 289–292. 2017. augusztus 9. dátummal az eredeti (PDF) címről archiválva. Hozzáférés: 2017. július 30..
  19. Akl, S.G.; Qiu, K.; Stojmenović, I. (1993). "Fundamental algorithms for the star and pancake interconnection networks with applications to computational geometry". Networks. 23 (4): 215–225. doi:10.1002/net.3230230403.
  20. Bass, D.W.; Sudborough, I.H. (2003. március). "Pancake problems with restricted prefix reversals and some corresponding Cayley networks". Journal of Parallel and Distributed Computing. 63 (3): 327–336. doi:10.1016/S0743-7315(03)00033-9.
  21. Berthomé, P.; Ferreira, A.; Perennes, S. (1996. december). "Optimal information dissemination in star and pancake networks". IEEE Transactions on Parallel and Distributed Systems. 7 (12): 1292–1300. doi:10.1109/71.553290.
  22. Kumar, V., Grama, A., Gupta, A., Karypis, G.: Introduction to Parallel Computing: Design and Analysis of Algorithms. Benjamin/Cummings (1994)
  23. Quinn, M.J.: Parallel Computing: Theory and Practice, second edition. McGrawHill (1994)
  • Heydari, M. H. and Sudborough, I. H. "On the Diameter of the Pancake Network," Journal of Algorithms 25 (1), 67-94, 1997.
  • Roney-Dougal, C. and Vatter, V. "Of pancakes, mice and men," Plus Magazine 54, March 2010.
  • Chitturi, B. and Sudborough, H. "Prefix reversals on strings". Proc. Int. Conf. Bioinformatics and Computational Biology, Vol. 2 (2010)591–598.
  • Hurkens, C., Iersel, L. V., Keijsper, J., Kelk, S., Stougie, L. and Tromp J. "Prefix reversals on binary and ternary strings". SIAM J. Discrete Math. 21(3)(2007) 592–611.

További információk

[szerkesztés | forrásszöveg szerkesztése]