Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
54
À.À. Ïàíüãèí, À.Â. Ïàíüãèí
ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 1, 2010ä ã.
Ïàíüãèí Àíäðåé Àëåêñàíäðîâè÷,Ïàíüãèí Àëåêñàíäð Âèêòîðîâè÷
ÇÀÄÀ×È ÍÀ ÏÅÐÅÏÐÀÂÓ. ÌÎÄÅËÈÐÎÂÀÍÈÅ.
ÀËÃÎÐÈÒÌÛ
© À.À. Ïàíüãèí, À.Â. Ïàíüãèí, 2010
Àííîòàöèÿ
Ðàññìàòðèâàåòñÿ øèðîêèé êëàññ çàäà÷ íà ïåðåïðàâó ñ ó÷åòîì ðàçëè÷íûõ îãðàíè-÷åíèé íà ñâÿçè ìåæäó ïåðñîíàæàìè. Ñ ïîìîùüþ ãðàôîâ ïðåäñòàâëåíû àëãîðèòìûðåøåíèÿ, ðåàëèçîâàííûå ïðîãðàììíî íà àëãîðèòìè÷åñêîì ÿçûêå Pascal è â ýëåêòðîí-íûõ òàáëèöàõ Excel.
Êëþ÷åâûå ñëîâà: çàäà÷è íà ïåðåïðàâó, ïîèñê â øèðèíó íà ãðàôå, ìîäåëèðîâàíèåâ MS Excel.
ÏÎÑÒÀÍÎÂÊÀ ÇÀÄÀ×È
Çàäà÷è äàííîãî òèïà îáû÷íî èñïîëüçó-þòñÿ äëÿ ðàçâèòèÿ àëãîðèòìè÷åñêîãî ñòèëÿìûøëåíèÿ øêîëüíèêîâ (â èãðîâîé ôîðìå). êîëëåêöèè öèôðîâûõ îáðàçîâàòåëüíûõðåñóðñîâ (ÖÎÐ) [1] â ñîñòàâ èíôîðìàöèîí-íîãî èñòî÷íèêà ñëîæíîé ñòðóêòóðû (ÈÈÑÑ)«Ìàòåìàòèêà íà êîìïüþòåðàõ» âõîäèò èìè-òàöèîííàÿ ìîäåëü ïåðåïðàâû ñ êîíñòðóêòî-ðîì çàäà÷ è çàäàíèåì ðàçëè÷íûõ îãðàíè÷å-íèé íà ñâÿçè ìåæäó ïåðñîíàæàìè (ðèñ. 1).
Ýòè îãðàíè÷åíèÿ ìîãóò áûòü ñëåäóþùå-ãî âèäà:
� çàäàíèå ãðóçîïîäúåìíîñòè èëè âìåñ-òèìîñòè ëîäêè;
� ïðèñóòñòâèå ëîäî÷íèêà;� îòäåëüíûé ïåðñîíàæ «êîíôëèêòóåò»
ñ äðóãèì ïåðñîíàæåì èëè îáúåêòîì («êîçà-êàïóñòà»);
� îòäåëüíûé ïåðñîíàæ «êîíôëèêòóåò»ñ äðóãèì ïåðñîíàæåì áåç ïðèñóòñòâèÿ (èëèïðè ïðèñóòñòâèè) òðåòüåãî òèïà ïåðñîíàæà(«ìóæ�æåíà», «ðûöàðü�îðóæåíîñåö»);
� êîëè÷åñòâî îäíîãî òèïà ïåðñîíàæåéáîëüøå êîëè÷åñòâà äðóãîãî òèïà ïåðñîíà-æåé («ðàçáîéíèêè-êóïöû»).
Ïðèìåðû çàäà÷ íà ïåðåïðàâó, ïðåäñòàâ-ëåííûå â ñáîðíèêå [2], äåìîíñòðèðóþò îò-äåëüíûå ëîãè÷åñêèå ïðèåìû äëÿ îãðàíè÷åí-íîãî êîëè÷åñòâà ïåðñîíàæåé.
 ýòîé ñòàòüå ñäåëàí ïîäõîä ê ôîðìà-ëèçàöèè äàííîãî òèïà çàäà÷ è ïðîãðàììíî-ãî ïîëó÷åíèÿ ðåøåíèÿ ñ ó÷åòîì ñíÿòèÿ ýòèõîãðàíè÷åíèé.
 êà÷åñòâå ìîäåëè ïåðåïðàâû ðàññìàò-ðèâàåòñÿ ãðàô ñîñòîÿíèé, à çà ðåøåíèå çà-äà÷è ïðèíèìàåòñÿ êðàò÷àéøèé ïóòü íà ýòîìãðàôå èç íà÷àëüíîãî ñîñòîÿíèÿ, ãäå âñå ïåð-ñîíàæè ðàñïîëàãàþòñÿ íà îäíîì áåðåãó, âêîíå÷íîå ñîñòîÿíèå, ãäå âñå ïåðñîíàæè íà-õîäÿòñÿ íà ïðîòèâîïîëîæíîì áåðåãó.
ÎÏÐÅÄÅËÅÍÈß È ÎÁÎÇÍÀ×ÅÍÈß
Ïåðñîíàæ � ëþáîé ñóáúåêò äåéñòâèÿ èëèïðåäìåò, êîòîðûé ìîæåò ó÷àñòâîâàòü â ïåðå-ïðàâå ñ îäíîãî áåðåãà íà äðóãîé: íàïðèìåð,âîëê, êîçà èëè êàïóñòà. Îòäåëüíûì ïåðñîíà-æåì, âñåãäà ïðèñóòñòâóþùèì â ëþáîé çàäà÷åíà ïåðåïðàâó, ÿâëÿåòñÿ ëîäêà.  íåêîòîðûõ
55
Çàäà÷è íà ïåðåïðàâó. Ìîäåëèðîâàíèå. Àëãîðèòìû
È Â ØÓÒÊÓ È ÂÑÅÐܨÇ
çàäà÷àõ ïîäðàçóìåâàåòñÿ, ÷òîëîäêà óïðàâëÿåòñÿ ëîäî÷íè-êîì. Ýòî îçíà÷àåò, ÷òî ïåð-ñîíàæ «ëîäêà» ìîæåò ïåðå-ïëûâàòü ðåêó ñàìîñòîÿòåëü-íî, áåç ó÷àñòèÿ äðóãèõ ïåð-ñîíàæåé. Íåñêîëüêî ïåðñî-íàæåé ìîãóò áûòü îäíîòèï-íûìè.  ýòîì ñëó÷àå îäíî-ìó íàèìåíîâàíèþ ñîïîñòàâ-ëÿåòñÿ íåêîòîðîå êîëè÷åñòâîïåðñîíàæåé äàííîãî òèïà,íàïðèìåð, äâà ñîëäàòà.
N � êîëè÷åñòâî ðàçëè÷-íûõ òèïîâ ïåðñîíàæåé. Âçàäà÷å ïðî âîëêà, êîçó è êà-ïóñòó N = 4 (ëîäêà � åùåîäèí òèï ïåðñîíàæà, êîòî-ðûé âñåãäà ïðèñóòñòâóåò âêîëè÷åñòâå 1 øò.).
Ci � êîëè÷åñòâî ïåðñîíàæåé i-ãî òèïà.Ëåâûé áåðåã � áåðåã ðåêè, íà êîòîðîì
íàõîäÿòñÿ âñå ïåðñîíàæè äî íà÷àëà ïåðå-ïðàâû.
Ïðàâûé áåðåã � ïðîòèâîïîëîæíûé áå-ðåã, êóäà íåîáõîäèìî ïåðåïðàâèòü âñåõ ïåð-ñîíàæåé.
Ñîñòîÿíèå � íàáîð V = (A1, A2, ..., AN),ãäå Ai � êîëè÷åñòâî ïåðñîíàæåé i-ãî òèïà,íàõîäÿùèõñÿ â óêàçàííûé ìîìåíò íà ëåâîìáåðåãó. Òàêîé íàáîð V îäíîçíà÷íî îïðåäåëÿ-åò ðàñïîëîæåíèå âñåõ ïåðñîíàæåé â äàííûéìîìåíò ïåðåïðàâû. Ïðîòèâîïîëîæíûì ñîñòî-ÿíèåì íàçîâåì íàáîð V' = (B1, B2, ..., BN), ãäåBi � êîëè÷åñòâî ïåðñîíàæåé i-ãî òèïà íàïðàâîì áåðåãó. Åñëè V = (A1, A2, ..., AN), òîV' = (C1 � A1, C2 � A2, ..., CN � AN) � ýòî î÷å-âèäíî, êðîìå òîãî, (V')' = V.
Íåäîïóñòèìîå ñîñòîÿíèå � ñîñòîÿíèå,ïðîòèâîðå÷àùåå óñëîâèÿì çàäà÷è, íàïðèìåðòî, â êîòîðîì âîëê è êîçà íàõîäÿòñÿ íà îä-íîì áåðåãó, à ëîäêà � íà ïðîòèâîïîëîæíîì.Î÷åâèäíî, åñëè V � íåäîïóñòèìîå ñîñòîÿ-íèå, òî V' ÿâëÿåòñÿ òàêæå íåäîïóñòèìûì.
M � êîëè÷åñòâî âñåõ ñîñòîÿíèé ïåðå-ïðàâû â äàííîé çàäà÷å, êàê äîïóñòèìûõ, òàêè íåäîïóñòèìûõ.
Õîä � îäíîêðàòíîå ïåðåìåùåíèå ëîäêèîò îäíîãî áåðåãà ê äðóãîìó, ïóñòîé ëèáî ñãðóïïîé ïåðñîíàæåé, ïîìåùàþùèõñÿ â ëîä-êå. Õîä èçìåíÿåò ñîñòîÿíèå ïåðåïðàâû.
ÃÐÀÔ ÑÎÑÒÎßÍÈÉ
Êîëè÷åñòâî âñåõ âîçìîæíûõ ñîñòîÿíèéïåðåïðàâû M ðàâíî ÷èñëó âñåõ âîçìîæíûõíàáîðîâ (A1, A2, ..., AN), ãäå Ai � öåëîå ÷èñ-ëî â äèàïàçîíå îò 0 äî Ci . Çíà÷èò,M = (Ñ1 + 1) · (Ñ2 + 1) · ... · (ÑN + 1). Òàêèìîáðàçîì, ñîñòîÿíèÿ ìîæíî ïðîíóìåðîâàòüîò 0 äî M � 1. Íèæå ïðèâåäåí êàíîíè÷åñ-êèé ñïîñîá íóìåðàöèè, ïðè êîòîðîì ñîñòî-ÿíèþ VK = (A1, A2, ..., AN) ñîïîñòàâëÿåòñÿíîìåð K, ðàâíûé çíà÷åíèþ ÷èñëà AN...A2A1â ïîçèöèîííîé ñèñòåìå ñ÷èñëåíèÿ ñ ïåðå-ìåííûì îñíîâàíèåì: îò (Ñ1 + 1) äëÿ ìëàä-øåãî ðàçðÿäà äî (ÑN + 1) äëÿ ñòàðøåãî ðàç-ðÿäà.
V0 = (0, 0, ..., 0)V1 = (1, 0, ..., 0)VC1 = (C1, 0, ..., 0)VC1+1 = (0, 1, ..., 0)...VC1+C2 = (0, C2, ..., 0)VC1+C2+1 = (1, C2, ..., 0)...VM�1 = (C1, C2, ..., CN)Íà÷àëüíûì ñîñòîÿíèåì íàçîâåì VM�1, â
êîòîðîì âñå ïåðñîíàæè íàõîäÿòñÿ íà ëåâîìáåðåãó, à êîíå÷íûì ñîñòîÿíèåì � V0, â êî-òîðîì âñå ïåðñîíàæè ïåðåïðàâëåíû íà ïðà-âûé áåðåã.
Ðèñ. 1
56
À.À. Ïàíüãèí, À.Â. Ïàíüãèí
ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 1, 2010ä ã.
Ïîñòðîèì îðèåíòèðîâàííûé ãðàô G(V, E),ãäå G � Graph (ãðàô), V � Vertices (ìíîæå-ñòâî âåðøèí), E � Edges (ìíîæåñòâî äóã).Ýòîò ãðàô ñîäåðæèò M âåðøèí, îòîæäåñòâ-ëÿåìûõ ñ ñîñòîÿíèÿìè V0, ..., VM�1, â êîòî-ðîì äóãà èç Vi â Vj ñóùåñòâóåò, òîëüêî åñëèèç ñîñòîÿíèÿ Vi ìîæíî ïîïàñòü â ñîñòîÿíèåVj çà îäèí õîä. Çàäà÷à î ïåðåïðàâå ñâîäèòñÿê ïîèñêó êðàò÷àéøåãî ïóòè íà òàêîì ãðàôåèç âåðøèíû VM�1 â âåðøèíó V0. Íà ðèñ. 2ïîêàçàí ïðèìåð ãðàôà äëÿ êëàññè÷åñêîéçàäà÷è ïðî âîëêà, êîçó è êàïóñòó.
×òîáû óäîâëåòâîðÿòü óñëîâèÿì çàäà÷è,êðàò÷àéøèé ïóòü èç VM�1 â V0 íå äîëæåíïðîõîäèòü ÷åðåç íåäîïóñòèìûå ñîñòîÿíèÿ,ïîýòîìó íåîáõîäèìî èñêëþ÷èòü èç ðàññìîò-ðåíèÿ âñå òàêèå âåðøèíû. Äëÿ ýòîãî äîñòà-òî÷íî èñêëþ÷èòü èç ãðàôà âñå äóãè, âõîäÿ-ùèå â âåðøèíû íåäîïóñòèìûõ ñîñòîÿíèé.Íà ðèñ. 2 òàêèå äóãè îáîçíà÷åíû ðîçîâûìöâåòîì.
ÐÅØÅÍÈÅ ÇÀÄÀ×È ÏÅÐÅÏÐÀÂÛÑÐÅÄÑÒÂÀÌÈ MS EXCEL
Ñïîñîáû ðåøåíèÿ ðàçëè÷íûõ çàäà÷ íàãðàôàõ ñ ïîìîùüþ Excel ðàññìàòðèâàåòñÿêàê çàìåíà ïðîãðàììèðîâàíèÿ ñòàíäàðò-íûõ àëãîðèòìîâ íà ãðàôàõ [3].
Ðàññìîòðèì ðåøåíèå îïòèìèçàöèîííîéçàäà÷è íà îðãðàôå, èçîáðàæåííîì íà ðèñ.2, ñ èñïîëüçîâàíèåì âñòðîåííûõ ñðåäñòâMS Excel, à èìåííî íàäñòðîéêè «Ïîèñêðåøåíèÿ».
Ïî óñëîâèþ çàäà÷è íåîáõîäèìî íàéòè(êðàò÷àéøèé) ïóòü ìåæäó ñîñòîÿíèÿìè-âåð-øèíàìè 15 è 0. Èñêëþ÷èì èç ãðàôà (äëÿóïðîùåíèÿ çàäà÷è) âåðøèíû ñ íåäîïóñòè-ìûìè ñîñòîÿíèÿìè, à òàêæå äóãè, âõîäÿ-ùèå â íèõ.  îáùåì ñëó÷àå âåðøèíû íå-äîïóñòèìûõ ñîñòîÿíèé ðàññìàòðèâàþòñÿêàê èçîëèðîâàííûå, òî åñòü â íèõ íå äîë-æíû âõîäèòü/âûõîäèòü äóãè. Äëÿ ðåçóëü-òèðóþùåãî ãðàôà, ñîñòîÿùåãî èç n = 10âåðøèí (íóìåðàöèþ ñîñòîÿíèé îñòàâèìïðåæíåé) ïîñòðîèì ìàòðèöó ñìåæíîñòèS = {sij} ïîðÿäêà n.
=jis
Î÷åâèäíî, ÷òî ìàòðèöà S � ñèììåòðè÷-íàÿ.
Ââåä¸ì äîïîëíèòåëüíî ìàòðèöó ñ öå-ëî÷èñëåííûìè ïåðåìåííûìè X = {xij},ãäå 1 ≤ i, j ≤ n, è xij = 1, åñëè êðàò÷àéøèéïóòü ñîäåðæèò ïåðåõîä èç âåðøèíû i â j;xij = 0 â ïðîòèâíîì ñëó÷àå.
Öåëåâàÿ ôóíêöèÿ èìååò ñëåäóþùèé âèä:
 íåé âû÷èñëÿåòñÿ êîëè÷åñòâî ïåðåõî-äîâ ìåæäó âåðøèíàìè â êðàò÷àéøåì ïóòè.
Ïåðâàÿ ïàðà îãðàíè÷åíèé çàäà¸ò óñëî-âèÿ äëÿ íà÷àëüíîé âåðøèíû ïóòè Víà÷. Âèñêîìîì ïóòè â ýòó âåðøèíó íå äîëæíî áûòüâõîäà, íî äîëæåí áûòü îäèí âûõîä:
,
.
Ðèñ. 2. Ãðàô ñîñòîÿíèé ïåðåïðàâû
1, åñëè âåðøèíû i è j ñîåäèíåíû äóãîé (ðåáðîì);0, â ïðîòèâíîì ñëó÷àå
57
Çàäà÷è íà ïåðåïðàâó. Ìîäåëèðîâàíèå. Àëãîðèòìû
È Â ØÓÒÊÓ È ÂÑÅÐܨÇ
Âòîðàÿ ïàðà îãðàíè÷åíèé çàäà¸ò óñëî-
âèÿ äëÿ êîíå÷íîé âåðøèíû ïóòè Vêîí. Âíå¸ äîëæåí áûòü îäèí âõîä, íî íå äîëæíîáûòü âûõîäà:
,
.
Äëÿ âñåõ îñòàëüíûõ âåðøèí Vk (êðîìå
Víà÷ è Vêîí) óñòàíàâëèâàþòñÿ îãðàíè÷åíèÿ,çàäàþùèå ðàâåíñòâî êîëè÷åñòâà âõîäîâ èâûõîäîâ â êàæäóþ èç íèõ â èñêîìîì êðàò-÷àéøåì ïóòè:
.
Äëÿ êàæäîé âåðøèíû êîëè÷åñòâî âõî-äîâ íå äîëæíî áûòü áîëåå îäíîãî:
.
Äëÿ êàæäîé âåðøèíû êîëè÷åñòâî âûõî-äîâ íå äîëæíî ïðåâûøàòü îäíîãî:
.
Ãðàíè÷íûå óñëîâèÿ óñòàíàâëèâàþò â êà-÷åñòâå îáëàñòè äîïóñòèìûõ çíà÷åíèé èñêî-ìûõ ïåðåìåííûõ çíà÷åíèÿ 0 èëè 1:
0 ≤ xij ≤ 1, ãäå 1 ≤ i, j ≤ n.Ïîäãîòîâèì äàííûå äëÿ ðåøåíèÿ çàäà-
÷è íà ðàáî÷åì ëèñòå Excel 2007 â ñîîòâåò-ñòâèè ñ ðèñ. 3 äëÿ ìàòðèöû ñìåæíîñòè S.Çàìå÷àíèå: èçíà÷àëüíî ìàòðèöà Õ � íóëå-âàÿ, ÿ÷åéêè Q3:Z12 � ïóñòûå.
ß÷åéêè Ñ3:L12 ñîäåðæàò ìàòðèöó ñìåæ-íîñòè S âåðøèí ãðàôà, à ÿ÷åéêè Q3:Z12 �èñêîìóþ ìàòðèöó X.
 ÿ÷åéêè M3:M12 âïèñûâàþòñÿ ôîðìó-ëû äëÿ âû÷èñëåíèÿ ñóììû ïðîèçâåäåíèéñîîòâåòñòâóþùèõ ñòðîê ìàòðèöû ñìåæíîñ-òè è ìàòðèöû ïåðåìåííûõ:ÑÓÌÌÏÐÎÈÇÂ(C3:L3;Q3:Z3) ...ÑÓÌÌÏÐÎÈÇÂ(C12:L12;Q12:Z12). ÿ÷åéêè C13:L13 âïèñûâàþòñÿ ôîðìóëûäëÿ âû÷èñëåíèÿ ñóììû ïðîèçâåäåíèé ñîîò-âåòñòâóþùèõ ñòîëáöîâ ýòèõ æå ìàòðèö:ÑÓÌÌÏÐÎÈÇÂ(C3:C12;Q3:Q12) ...ÑÓÌÌÏÐÎÈÇÂ(L3:L12;Z3:Z12).
Ðèñ. 3. Ìîäåëèðîâàíèå çàäà÷è ïåðåïðàâû â MS Excel
58
À.À. Ïàíüãèí, À.Â. Ïàíüãèí
ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 1, 2010ä ã.
 ÿ÷åéêó M13 (íà ðèñóíêå âûäåëåíà) ââå-ä¸ì ôîðìóëó äëÿ âû÷èñëåíèÿ öåëåâîé ôóí-êöèè: ÑÓÌÌÏÐÎÈÇÂ(C3:L12;Q3:Z12).
Îòêðîåì îêíî «Ïîèñê ðåøåíèÿ» (ïóíêòìåíþ «Äàííûå/Ïîèñê ðåøåíèÿ») è óñòàíî-âèì ñëåäóþùèå çíà÷åíèÿ.
Öåëåâàÿ ÿ÷åéêà � $M$13 ðàâíà ìèíè-ìàëüíîìó çíà÷åíèþ.
Èçìåíÿåìûå ÿ÷åéêè � $Q$3:$Z$12.Îãðàíè÷åíèÿ:
$Q$3:$Z$12 = öåëîå;$Q$3:$Z$12 >= 0;$Q$3:$Z$12 <= 1;$L$13 = 0;$M$12 = 1;$C$13 = 1;$M$3 = 0;$M$4:$M$11 = $D$13:$K$13;$M$3:$M$12 <=1;$M$3:$M$12 >= 0;$C$13:$L$13 <=1;$C$13:$L$13 >= 0;
Ïàðàìåòðû � ëèíåéíàÿ ìîäåëü.Ïîñëå ââîäà âñåõ ïàðàìåòðîâ íàæàòèåì
êíîïêè «Âûïîëíèòü» èùåì ðåøåíèå.Âîçìîæíû 2 ðåçóëüòàòà:1. Êðàò÷àéøèé ïóòü ñóùåñòâóåò, è ðå-
øåíèå íàéäåíî. Ìàòðèöà íåèçâåñòíûõ Xïðåîáðàçóåòñÿ â ñîîòâåòñòâèè ñ íàéäåííûìðåøåíèåì (ðèñ. 2). Ìû âèäèì, ÷òî îïòè-ìàëüíûé ïóòü çà 7 õîäîâ ïðîõîäèò ÷åðåçâåðøèíû: 15 (íà÷àëüíîå ïîëîæåíèå) → 10 (ïåðåâåçëè êîçó) → 11 (ëîäêà âåðíó-ëàñü) → 2 (ïåðåâåçëè êàïóñòó) → 7 (ëîäêàñ êîçîé âåðíóëèñü) → 4 (ïåðåâåçëè âîëêà) →5 (ëîäêà âåðíóëàñü) → 0 (ïåðåâåçëè êîçó).
2. Êðàò÷àéøèé ïóòü íå ñóùåñòâóåò è íåíàéäåí.  òàêîì ñëó÷àå ñèñòåìà âûäà¸ò ñî-îáùåíèå «Ïîèñê íå ìîæåò íàéòè ïîäõîäÿ-ùåãî ðåøåíèÿ».
Äëÿ âûäåëåíèÿ öâåòîì çíà÷åíèé íàéäåí-íîãî ðåøåíèÿ äëÿ ÿ÷ååê òàáëèöû íåèçâåñò-íûõ èñïîëüçóåòñÿ ïóíêò ìåíþ «Óñëîâíîåôîðìàòèðîâàíèå/Ñîçäàòü ïðàâèëî...».
Ãîòîâàÿ ìîäåëü è ðåøåíèå ñîäåðæèòñÿâ ôàéëå Pereprava_xls.zip Ïðèëîæåíèÿ.
Âûáîð Excel äëÿ ðåøåíèÿ ïîñòàâëåííîéçàäà÷è íåñåò ñêîðåå äåìîíñòðàòèâíûé ïðè-ìåð èñïîëüçîâàíèÿ ãîòîâûõ èíñòðóìåíòàëü-íûõ ñðåäñòâ. Ñ óâåëè÷åíèåì ÷èñëà ïåðñî-
íàæåé î÷åíü áûñòðî ðàñòåò ÷èñëî âîçìîæ-íûõ ñîñòîÿíèé, è ïîäãîòîâêà äàííûõ ñòà-íîâèòñÿ çàòðóäíèòåëüíîé. Ñëåäóåò ïðèâëå-êàòü ýâðèñòè÷åñêèå ìåòîäû äëÿ óïðîùåíèÿçàäà÷è (íàïðèìåð, ñâåäåíèå ê ïðîñòîé ÷àñ-òíîé ïîäçàäà÷å) èëè èñïîëüçîâàòü ïðîãðàìì-íûå àëãîðèòìû çàäàíèÿ èñõîäíûõ äàííûõè ïîèñêà ðåøåíèé, êàê ðàññìîòðåíî íèæå.
ÏÐÎÃÐÀÌÌÍÛÉ ÀËÃÎÐÈÒÌ ÏÎÈÑÊÀ
 îñíîâå àëãîðèòìà ðåøåíèÿ çàäà÷è íàïåðåïðàâó ëåæèò ìåòîä ïîèñêà â øèðèíó(BFS, Breadth-first search), òàêæå èçâåñòíûéïîä íàçâàíèåì «âîëíà íà ãðàôå».
Àëãîðèòì ïîèñêà â øèðèíó çàêëþ÷àåò-ñÿ â ñëåäóþùåì. Íà ïåðâîì øàãå ðàññìàò-ðèâàþòñÿ âñå äóãè, èñõîäÿùèå èç VM�1.Ñìåæíûå ñ VM�1 âåðøèíû ïîìå÷àþòñÿ êàêäîñòèæèìûå çà îäèí õîä � âåðøèíû ïåðâî-ãî ðàíãà. Íà âòîðîì øàãå ïîî÷åðåäíî ðàñ-ñìàòðèâàþòñÿ âåðøèíû ïåðâîãî ðàíãà è äóãè,èñõîäÿùèå èç íèõ. Âñå âåðøèíû, â êîòî-ðûå âõîäÿò ýòè äóãè, ïîìå÷àþòñÿ êàê äîñ-òèæèìûå çà äâà õîäà, åñëè îíè íå áûëèïîìå÷åíû ðàíåå. Ýòî áóäóò âåðøèíû âòî-ðîãî ðàíãà. Äåéñòâèå ïîâòîðÿåòñÿ äî òåõ ïîð,ïîêà ñðåäè ïîìå÷åííûõ âåðøèí íå îêàæåòñÿV0. Ðàíã âåðøèíû V0 è áóäåò ÿâëÿòüñÿ äëè-íîé êðàò÷àéøåãî ïóòè, òî åñòü ìèíèìàëü-íûì êîëè÷åñòâîì õîäîâ, çà êîòîðîå ìîæíîîñóùåñòâèòü ïåðåïðàâó. Åñëè æå íà î÷åðåä-íîì øàãå àëãîðèòìà íè îäíà íîâàÿ âåðøè-íà íå áóäåò ïîìå÷åíà, òî ïóòè èç VM�1 â V0íå ñóùåñòâóåò, è çàäà÷à ðåøåíèÿ íå èìååò.
 ïðèâåäåííîì âûøå ïðèìåðå ïåðâûéðàíã ïîëó÷èò âåðøèíà V10 êàê äîñòèæèìàÿèç íà÷àëüíîé âåðøèíû V15 çà îäèí õîä. V11ñòàíåò âåðøèíîé âòîðîãî ðàíãà, áëàãîäàðÿíàëè÷èþ äóãè èç V10 â V11. Ñìåæíûå ñ V11âåðøèíû V2 è V8 ñòàíóò âåðøèíàìè òðåòüå-ãî ðàíãà. Ñëåäóþùèìè áóäóò ïîìå÷åíû âåð-øèíû ÷åòâåðòîãî ðàíãà V7 â V13, äàëåå V4 �ïÿòîãî ðàíãà, V5 � øåñòîãî è, íàêîíåö, V0 �ñåäüìîãî.
Ïîñëå òîãî êàê âåðøèíàì âïëîòü äî V0ñîïîñòàâëåíû ðàíãè, ìîæíî âîññòàíîâèòüêðàò÷àéøèé ïóòü ñ êîíöà, îáîéäÿ ïîñëåäî-âàòåëüíî âåðøèíû óìåíüøàþùåãî ðàíãà ïîäóãàì â îáðàòíîì ïîðÿäêå. Òàê, â íàøåì
59
Çàäà÷è íà ïåðåïðàâó. Ìîäåëèðîâàíèå. Àëãîðèòìû
È Â ØÓÒÊÓ È ÂÑÅÐܨÇ
ïðèìåðå ìû íàéäåì îäèí èç äâóõ ñóùåñòâó-þùèõ êðàò÷àéøèõ ïóòåé:
V15 → V10→ V11→ V2→ V7→ V4→ V5→ V0
èëè
V15→ V10→ V11→ V8→ V13→ V4→ V5→ V0
Òåïåðü îñòàíåòñÿ ëèøü ðàñøèôðîâàòüïîðÿäêîâûå íîìåðà ñîñòîÿíèé îáðàòíî â íà-áîðû, õàðàêòåðèçóþùèå êîëè÷åñòâî ïåðñî-íàæåé íà îáîèõ áåðåãàõ, è çàäà÷à ðåøåíà.
Ïðîãðàììà � ðåøàòåëü çàäà÷ íà ïåðå-ïðàâó (RiverSolver.exe) è ïðèìåðû çàäàíèé(ôàéëû *.txt) ïðèâåäåíû â Ïðèëîæåíèè.
Âîçìîæíû è äðóãèå àëãîðèòìû ðåøå-íèÿ çàäà÷è ïåðåïðàâû (íàïðèìåð, ñ èñ-ïîëüçîâàíèåì äèíàìè÷åñêîãî ïðîãðàììèðî-âàíèÿ), õîòÿ îíè ìîãóò ïðèâîäèòü ê êóðüåç-íûì ñèòóàöèÿì, êîãäà «ïðàâèëüíîå» ðåøå-íèå ñîäåðæèò âàðèàíò ïåðåïðàâû, â êîòîðîìîäíîâðåìåííî ïîëâîëêà è ïîëêàïóñòû [4].
Ïðèìåð.
Äàííàÿ çàäà÷à íà ïåðåïðàâó èñïîëüçî-âàëàñü â ßïîíèè â êà÷åñòâå òåñòà äëÿ îïðå-äåëåíèÿ èíòåëëåêòà ïðè ïðèåìå íà ðàáîòó.
Òðåáóåòñÿ ïåðåïðàâèòü íà äðóãîé áåðåãñåìüþ (îòöà, ìàòü, äâóõ äî÷åðåé è äâóõ ñû-íîâåé), à òàêæå ïîëèöåéñêîãî ñ ïðåñòóïíè-êîì, ñîáëþäàÿ ñëåäóþùèå ïðàâèëà:
Íà ïëîòó ìîãóò íàõîäèòüñÿ íå áîëåå äâóõ÷åëîâåê îäíîâðåìåííî. Îòåö íå ìîæåò îñ-òàòüñÿ ñ ëþáîé èç äî÷åðåé áåç ïðèñóòñòâèÿèõ ìàòåðè. Ìàòü íå ìîæåò îñòàòüñÿ íè ñîäíèì èç ñûíîâåé áåç ïðèñóòñòâèÿ èõ îòöà.Ïðåñòóïíèê íå ìîæåò îñòàâàòüñÿ íè ñ êà-êèì ÷ëåíîì ñåìåéñòâà, åñëè ðÿäîì íåò ïî-ëèöåéñêîãî. Òîëüêî îòåö, ìàòü è ïîëèöåé-ñêèé ìîãóò óïðàâëÿòü ïëîòîì.
Ïîïðîáóéòå íàéòè ðåøåíèå ñàìîñòîÿ-òåëüíî. Ôëåø-àíèìàöèÿ çàäà÷è ïðèâåäåíàâ [5]. ×òîáû íà÷àòü èãðó, ñëåäóåò íàæàòü íàñèíèé êðóæîê ñïðàâà. Äëÿ ïåðåìåùåíèÿïëîòà ùåëêíèòå ìûøêîé íà êðàñíûé øà-ðèê íà æåðäè. ×òîáû ïåðåìåñòèòü ëþäåéíà ïëîò èëè ñ íåãî, ïðîñòî ùåëêíèòå íàâûáðàííîì ïåðñîíàæå.
Còðóêòóðà ôàéëà çàäàíèÿ ñëåäóþùàÿ(family.tsk ôîðìèðóåòñÿ àâòîìàòè÷åñêè ïðèñîõðàíåíèè óñëîâèÿ çàäà÷è)
# ñïèñîê ïåðñîíàæåéîòåöñûí 2ìàòüäî÷ü 2ïîëèöåéñêèéïðåñòóïíèê# êòî ìîæåò ïëûòü â ëîäêåîòåöîòåö *ìàòüìàòü *ïîëèöåéñêèéïîëèöåéñêèé *# ñïèñîê îãðàíè÷åíèéîòåö x äî÷ü : ìàòüìàòü x ñûí : îòåöïðåñòóïíèê x îòåö : ïîëèöåéñêèéïðåñòóïíèê x ñûí : ïîëèöåéñêèéïðåñòóïíèê x ìàòü : ïîëèöåéñêèéïðåñòóïíèê x äî÷ü : ïîëèöåéñêèé
Íóæäàåòñÿ â ïîÿñíåíèè òîëüêî áëîêäàííûõ «êòî ìîæåò ïëûòü â ëîäêå». Îäíàçâåçäî÷êà â ñòðîêå îáîçíà÷àåò îäíîãî ïðåä-ñòàâèòåëÿ ëþáîãî òèïà ïåðñîíàæà (äâå çâåç-äî÷êè � äâà ïðåäñòàâèòåëÿ ëþáûõ òèïîâïåðñîíàæåé). Âîçìîæíî çàäàíèå èìåíè êîí-êðåòíîãî òèïà ïåðñîíàæà.
 áëîêå «ñïèñîê îãðàíè÷åíèé» ïåðåñòà-íîâêà ïåðñîíàæåé è ïîðÿäêà ñòðîê îãðàíè-÷åíèé íå âàæíà.
Èíôîðìàöèîííûå áëîêè èñõîäíîãîôàéëà äàííûõ îãðàíè÷èâàþòñÿ ñòðîêîé ññèìâîëîì # èëè ïóñòîé ñòðîêîé.
 ðåçóëüòàòå ðàáîòû ïðîãðàììûRiverSolver ïîëó÷èì îòâåò íà ýêðàíå äèñï-ëåÿ (ðèñ. 4).
ÇÀÊËÞ×ÅÍÈÅ
Ïîñòðîåíà ìîäåëü çàäà÷è ïåðåïðàâû èäàíî åå ðåøåíèå ñ èñïîëüçîâàíèåì ñòàí-äàðòíîãî ïàêåòà ïðèëîæåíèé è àëãîðèòìîâ.Ôîðìàëèçàöèÿ çàäà÷è ïîçâîëÿåò ïðîâåñòèïîèñê îïòèìàëüíîãî ðåøåíèÿ ïðè çàäàíèèñëîæíûõ êîìáèíàöèé îãðàíè÷åíèé äëÿáîëüøîãî êîëè÷åñòâà ïåðñîíàæåé â óñëî-âèè çàäà÷è.
60
À.À. Ïàíüãèí, À.Â. Ïàíüãèí
ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 1, 2010ä ã.
Ïàíüãèí Àíäðåé Àëåêñàíäðîâè÷,âåäóùèé èíæåíåð-ïðîãðàììèñòôèðìû Sun Microsystems,[email protected].
Ïàíüãèí Àëåêñàíäð Âèêòîðîâè÷,èíæåíåð Öåíòðà ÈíôîðìàöèîííûõÒåõíîëîãèé (ÖÈÒ) ã. Ñîñíîâûé Áîð,[email protected].
Ëèòåðàòóðà
1. http://school-collection.edu.ru/ � Åäèíàÿ êîëëåêöèÿ Öèôðîâûõ Îáðàçîâàòåëüíûõ Ðåñóðñîâ.2. Ë.Ë. Áîñîâà, À.Þ. Áîñîâà, Þ.Ã. Êîëîìåíñêàÿ. Çàíèìàòåëüíûå çàäà÷è ïî èíôîðìàòèêå. Ì.:
Áèíîì. Ëàáîðàòîðèÿ çíàíèé, 2005.3. http://zhurnal.ape.relarn.ru/articles/2006/155.pdf4. http://www.zib.de/Publications/Reports/SC-95-27.pdf5. http://dagobah.biz/flash/riverIQGame.swf
Ðèñ. 4. Êîìïüþòåðíîå ðåøåíèå çàäà÷è ïåðåïðàâû
Abstract
A range of river crossing puzzles with various types of constraints is considered. Analgorithm based on a graph model is proposed. A method of solving the problem usingExcel is described.
Keywords: river crossing puzzles, breadth-first search, Excel modelling.