10
49 ˙À˛×˝Àß Ø˚˛¸À Ñ˛´—¯Ì¯˝˝˛ˆ˛ ˇ—˛ˆ—ÀĮ̀—˛´À˝¨ß ˝îâLŒîâ Ôåäîð ÀºåŒæàíäðîâL÷, ˇîçäíÿŒîâ ÑåðªåØ ˝LŒîºàåâL÷ ˘À˜˝Û¯ À¸ˆ˛—¨ÒÌÛ ˚˛ˆ˜À ´Ûˆ˛˜˝˛ `ÛÒÜ ˘À˜˝ÛÌ ˚îªî ìß íàçßâàåì æàäíßì? ÑŒàçàòü, ÷òî ýòî ÷åºîâåŒ, ŒîòîðßØ íå ıî÷åò äåºLòü- æÿ òåì, ÷òî ó íåªî åæòü, ìàºî. ˛Æß÷íî òàŒ íàçßâàþò ÷åºîâåŒà, ŒîòîðßØ íå ıî÷åò íL- ÷åªî îòäàâàòü, äàæå åæºL ýòLì îí íàíîæLò æåÆå âðåä. ˇðLìåðíî òàŒ æå ìîæíî îïðåäå- ºLòü L æàäíßå ສîðLòìß: îíL íà Œàæäîì làªå âßÆLðàþò ıîä, ŒîòîðßØ ÿâºÿåòæÿ îï- òLìàºüíßì ºîŒàºüíî, íî ìîæåò ïðLâåæòL Œ ðålåíLþ, íå ÿâºÿþøåìóæÿ îïòLìàºüíßì ªºîÆàºüíî. —àææìîòðLì ïðîæòóþ çàäà÷ó, ïîæâÿ- øåííóþ ïðåäìåòó, íàLÆîºåå àææîöLLðóþøå- ìóæÿ æ æàäíîæòüþ îïºàòå óæºóª. ˇóæòü âßïîºíåííàÿ ðàÆîòà îöåíLâà- åòæÿ â 190 ðóƺåØ. ˘àäíîæòü çàŒàç÷LŒà ïðî- ÿâºÿåòæÿ â òîì, ÷òî îí ıî÷åò îïºàòLòü óæ- ºóªL íàLìåíülLì ÷Læºîì Œóïþð (Œîíå÷- íî, ýòî âåæüìà æïåöLôL÷íßØ âLä æàäíîæ- òL). ÀºªîðLòì åªî äåØæòâLØ òàŒîØ: æíà÷à- ºà îïºàòLòü âîçìîæíî Æîºülóþ ÷àæòü ðà- Æîòß ŒðóïíßìL ŒóïþðàìL, çàòåì ïåðåØòL Œ Œóïþðàì ìåíülåªî íîìLíàºà L ò.ä . ´ äàííîì æºó÷àå îí Læïîºüçóåò 6 Œóïþð: 190 = 100 + 50 + 10 + 10 + 10 + 10. ˝åòðóäíî âLäåòü, ÷òî â ïðLâåäåííîì ïðLìåðå æòðàòåªLÿ äàåò ºó÷låå ðålåíLå. Ýòî ïðîLçîlºî âî ìíîªîì ƺàªîäàðÿ ıîðî- lî ïðîäóìàííßì íîìLíàºàì Œóïþð. ˇîºî- æLì, ÷òî ïîæºå äåíåæíîØ ðåôîðìß íîìL- íàºß Œóïþð LçìåíLºLæü òàŒ: 155, 45, 5. Òîª- äà æàäíßØ àºªîðLòì ïðLâåäåò Œ ïðåäæòàâ- ºåíLþ 190 = 155 + 5 + 5 + 5 + 5 + 5 + 5 + 5, æîîòâåòæòâóþøåìó 8 Œóïþðàì, à îïòLìàºü- íßØ ðàçìåí 190 = 45 + 45 + 45 + 45 + 5 + 5 äàåò 6 Œóïþð. ¨òàŒ, íà ýòîì çàíÿòLL ØŒîºß ìß äàäLì îòâåòß íà æºåäóþøLå âîïðîæß: 1) ŒàŒLå åøå åæòü çàäà÷L, äºÿ Œîòî- ðßı æàäíßØ àºªîðLòì ðàÆîòàåò ïðàâLºüíî? 2) ŒàŒ îïLæàòü æàäíßØ àºªîðLòì â îÆøåì âLäå? 3) ŒàŒLìL æâîØæòâàìL äîºæíà îƺà- äàòü çàäà÷à, ÷òîÆß æàäíßØ àºªîðLòì äàâຠîïòLìàºüíîå ðålåíLå? 4) ŒàŒ Læïîºüçîâàòü æàäíßØ àºªîðLòì â òåı çàäà÷àı, ªäå îí íå äàåò îïòLìàºüíîªî ðålåíLÿ? ˙àäàíLå 1. ˇåðåâîä ÷Læåº â äâîL÷- íóþ æLæòåìó. —àææìîòðLì ສîðLòì ïåðåâîäà ÷Læºà Lç äåæÿòL÷íîØ æLæòåìß â äâîL÷íóþ ŒàŒ âß- äà÷ó æóììß N ŒóïþðàìL æ íîìLíàºàìL, ðàâ- íßìL æòåïåíÿì äâîØŒL, ..., 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1. Óðîâåíü 1. ˛ïLæàòü íà ïðLìåðå ðàÆî- òó æàäíîªî ສîðLòìà äºÿ ÷Læºà 2005. Óðîâåíü 2. ˝àïLæàòü ïðîªðàììó, ðåà- ºLçóþøóþ æàäíßØ àºªîðLòì (ìLíLìLçàöLÿ ÷Læºà æºàªàåìßı) äºÿ ðàçºîæåíLÿ íàòóðàºü- íîªî ÷Læºà â æóììó à) æòåïåíåØ äâîØŒL; Æ) ÷åòíßı æòåïåíåØ äâîØŒL. ˝à âıîä ïîäàåòæÿ ÷Læºî, íà âßıîäå æºàªàåìßå â óÆßâàþøåì ïîðÿäŒå. ˇðLìåð Æ). ´âîä: 11 ´ßâîä: 4 4 1 1 1

ЖАДНЫЕ АЛГОРИТМЫ

  • Upload
    devtype

  • View
    1.178

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ЖАДНЫЕ АЛГОРИТМЫ

49

Æàäíûå àëãîðèòìû

ÇÀÎ×ÍÀß ØÊÎËÀ ÑÎÂÐÅÌÅÍÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Íîâèêîâ Ôåäîð Àëåêñàíäðîâè÷,Ïîçäíÿêîâ Ñåðãåé Íèêîëàåâè÷

ÆÀÄÍÛÅ ÀËÃÎÐÈÒÌÛ

ÊÎÃÄÀ ÂÛÃÎÄÍÎ ÁÛÒÜ ÆÀÄÍÛÌ

Êîãî ìû íàçûâàåì æàäíûì? Ñêàçàòü,÷òî ýòî ÷åëîâåê, êîòîðûé íå õî÷åò äåëèòü-ñÿ òåì, ÷òî ó íåãî åñòü, ìàëî. Îáû÷íî òàêíàçûâàþò ÷åëîâåêà, êîòîðûé íå õî÷åò íè-÷åãî îòäàâàòü, äàæå åñëè ýòèì îí íàíîñèòñåáå âðåä. Ïðèìåðíî òàê æå ìîæíî îïðåäå-ëèòü è æàäíûå àëãîðèòìû: îíè íà êàæäîìøàãå âûáèðàþò õîä, êîòîðûé ÿâëÿåòñÿ îï-òèìàëüíûì ëîêàëüíî, íî ìîæåò ïðèâåñòè êðåøåíèþ, íå ÿâëÿþùåìóñÿ îïòèìàëüíûìãëîáàëüíî.

Ðàññìîòðèì ïðîñòóþ çàäà÷ó, ïîñâÿ-ùåííóþ ïðåäìåòó, íàèáîëåå àññîöèèðóþùå-ìóñÿ ñ æàäíîñòüþ � îïëàòå óñëóã.

Ïóñòü âûïîëíåííàÿ ðàáîòà îöåíèâà-åòñÿ â 190 ðóáëåé. Æàäíîñòü çàêàç÷èêà ïðî-ÿâëÿåòñÿ â òîì, ÷òî îí õî÷åò îïëàòèòü óñ-ëóãè íàèìåíüøèì ÷èñëîì êóïþð (êîíå÷-íî, ýòî âåñüìà ñïåöèôè÷íûé âèä æàäíîñ-òè). Àëãîðèòì åãî äåéñòâèé òàêîé: ñíà÷à-ëà îïëàòèòü âîçìîæíî áîëüøóþ ÷àñòü ðà-áîòû êðóïíûìè êóïþðàìè, çàòåì ïåðåéòèê êóïþðàì ìåíüøåãî íîìèíàëà è ò.ä . Âäàííîì ñëó÷àå îí èñïîëüçóåò 6 êóïþð:190 = 100 + 50 + 10 + 10 + 10 + 10.

Íåòðóäíî âèäåòü, ÷òî â ïðèâåäåííîìïðèìåðå ñòðàòåãèÿ äàåò ëó÷øåå ðåøåíèå.Ýòî ïðîèçîøëî âî ìíîãîì áëàãîäàðÿ õîðî-øî ïðîäóìàííûì íîìèíàëàì êóïþð. Ïîëî-æèì, ÷òî ïîñëå äåíåæíîé ðåôîðìû íîìè-íàëû êóïþð èçìåíèëèñü òàê: 155, 45, 5. Òîã-äà æàäíûé àëãîðèòì ïðèâåäåò ê ïðåäñòàâ-ëåíèþ 190 = 155 + 5 + 5 + 5 + 5 + 5 + 5 + 5,

ñîîòâåòñòâóþùåìó 8 êóïþðàì, à îïòèìàëü-íûé ðàçìåí 190 = 45 + 45 + 45 + 45 + 5 + 5äàåò 6 êóïþð.

Èòàê, íà ýòîì çàíÿòèè Øêîëû ìûäàäèì îòâåòû íà ñëåäóþùèå âîïðîñû:

1) êàêèå åùå åñòü çàäà÷è, äëÿ êîòî-ðûõ æàäíûé àëãîðèòì ðàáîòàåò ïðàâèëüíî?

2) êàê îïèñàòü æàäíûé àëãîðèòì âîáùåì âèäå?

3) êàêèìè ñâîéñòâàìè äîëæíà îáëà-äàòü çàäà÷à, ÷òîáû æàäíûé àëãîðèòì äàâàëîïòèìàëüíîå ðåøåíèå?

4) êàê èñïîëüçîâàòü æàäíûé àëãîðèòìâ òåõ çàäà÷àõ, ãäå îí íå äàåò îïòèìàëüíîãîðåøåíèÿ?

Çàäàíèå 1. Ïåðåâîä ÷èñåë â äâîè÷-íóþ ñèñòåìó.

Ðàññìîòðèì àëãîðèòì ïåðåâîäà ÷èñëàèç äåñÿòè÷íîé ñèñòåìû â äâîè÷íóþ êàê âû-äà÷ó ñóììû N êóïþðàìè ñ íîìèíàëàìè, ðàâ-íûìè ñòåïåíÿì äâîéêè, ..., 1024, 512, 256,128, 64, 32, 16, 8, 4, 2, 1.

Óðîâåíü 1. Îïèñàòü íà ïðèìåðå ðàáî-òó æàäíîãî àëãîðèòìà äëÿ ÷èñëà 2005.

Óðîâåíü 2. Íàïèñàòü ïðîãðàììó, ðåà-ëèçóþùóþ æàäíûé àëãîðèòì (ìèíèìèçàöèÿ÷èñëà ñëàãàåìûõ) äëÿ ðàçëîæåíèÿ íàòóðàëü-íîãî ÷èñëà â ñóììó

à) ñòåïåíåé äâîéêè;á) ÷åòíûõ ñòåïåíåé äâîéêè.Íà âõîä ïîäàåòñÿ ÷èñëî, íà âûõîäå �

ñëàãàåìûå â óáûâàþùåì ïîðÿäêå.

Ïðèìåð á).Ââîä:11Âûâîä:44111

Page 2: ЖАДНЫЕ АЛГОРИТМЫ

50

Íîâèêîâ Ô.À., Ïîçäíÿêîâ Ñ.Í.

© ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 2, 2005 ã.

Óðîâåíü 3.à) Èññëåäóéòå îïòèìàëüíîñòü æàäíî-

ãî àëãîðèòìà äëÿ ðåøåíèÿ ïðåäûäóùåé çà-äà÷è, äàâ äîêàçàòåëüñòâî îïòèìàëüíîñòè èëèïðèâåäÿ ïðèìåð, îïðîâåðãàþùèé îïòèìàëü-íîñòü.

á) Ïîñòðîéòå àëãîðèòì, êîòîðûé ïî÷èñëó N îïðåäåëÿåò ÷èñëî ñëàãàåìûõ â ñóì-ìå èç ïðåäûäóùåé çàäà÷è.

â) Ïîñòðîéòå àëãîðèòì, êîòîðûé ïî÷èñëó N îïðåäåëÿåò ìàêñèìàëüíîå ÷èñëî ñëà-ãàåìûõ â ýòîé ñóììå ïðè ðàçëîæåíèè ÷è-ñåë, íå ïðåâûøàþùèõ N.

ÀËÃÎÐÈÒÌ ÕÀÔÔÌÅÍÀ

Ðàññìîòðèì çàäà÷ó, ñâÿçàííóþ ñ ýêî-íîìíûì äâîè÷íûì êîäèðîâàíèåì.

Êàê èçâåñòíî, êàæäûé ñèìâîëàëôàâèòà ìîæíîçàêîäèðîâàòü ïîñ-ëåäîâàòåëüíîñòüþèç íóëåé è åäèíèö.Äëÿ ýôôåêòèâíîéïåðåäà÷è èíôîð-ìàöèè åñòåñòâåííîïîòðåáîâàòü, ÷òîáû ýòà ïîñëåäîâàòåëüíîñòü:

1) îäíîçíà÷íî ðàñøèôðîâûâàëàñü;2) èìåëà ìèíèìàëüíóþ äëèíó.Äëÿ ïåðâîãî óñëîâèÿ äîñòàòî÷íî âûá-

ðàòü ðàçëè÷íûå êîäîâûå ñëîâà îäèíàêîâîéäëèíû. Íàïðèìåð, äâîè÷íûìè ïîñëåäîâà-òåëüíîñòÿìè äëèíû 7 ìîæíî çàøèôðîâàòü27 = 128 ðàçëè÷íûõ ñèìâîëîâ. Òîãäà òåêñòèç 1000 ñèìâîëîâ âñåãäà áóäåò èìåòü äëèíó7000. Ìîæíî ëè óìåíüøèòü ýòó äëèíó? Åñëèèñïîëüçîâàòü ïîñëåäîâàòåëüíîñòè äëèíû 6,òî äëèíà òåêñòà óìåíüøèòñÿ äî 6000 ñèì-âîëîâ, îäíàêî àëôàâèò ñòàíåò âäâîå ìåíü-øå è åãî íå õâàòèò, íàïðèìåð, äëÿ îäíîâðå-ìåííîãî èñïîëüçîâàíèÿ ëàòèíèöû, êèðèë-ëèöû, çíàêîâ ïðåïèíàíèÿ è öèôð. Äðóãîéïóòü ñîñòîèò â òîì, ÷òîáû èñïîëüçîâàòüêîðîòêèå ïîñëåäîâàòåëüíîñòè äëÿ îáîçíà-÷åíèÿ ÷àñòî èñïîëüçóåìûõ ñèìâîëîâ è äëèí-íûå � äëÿ ðåäêî èñïîëüçóåìûõ. Òîãäà âîç-íèêàåò äðóãàÿ ïðîáëåìà � êàê îòäåëèòü ñèì-âîëû äðóã îò äðóãà. Ýòî ìîæíî ñäåëàòü ïî-ðàçíîìó. Îäèí èç ñïîñîáîâ ñîñòîèò â òîì,÷òîáû äëèííûå ïîñëåäîâàòåëüíîñòè, êîäè-ðóþùèå îäíè áóêâû, íå íà÷èíàëèñü ñ áîëåå

êîðîòêèõ ïîñëåäîâàòåëüíîñòåé, êîäèðóþùèõäðóãèå. Êîäû ñ òàêèì ñâîéñòâîì íàçûâàþò-ñÿ ïðåôèêñíûìè. Åñëè áû â íàøåì àëôà-âèòå áûëî òîëüêî äâå áóêâû �à� è �á�, òîïîñòðîèòü òàêîé êîä áûëî áû ïðîñòî, êî-äèðóÿ �à� íóëåì, �á� åäèíèöåé. Åñëè íàøàëôàâèò ñîñòîèò èç òðåõ áóêâ �à�, �á�, �â�,òî, çàøèôðîâàâ �à� íóëåì, êîäû äëÿ äðóãèõáóêâ ïðèäåòñÿ íà÷àòü ñ åäèíèöû: 10 è 11.Òîãäà ëþáàÿ ïðàâèëüíàÿ äâîè÷íàÿ ïîñëåäî-âàòåëüíîñòü îäíîçíà÷íî ðàñøèôðóåòñÿ, íà-ïðèìåð, 1000101011 êàê �áààááâ�. Ïðè êî-äèðîâàíèè ñèìâîëîâ ïîñëåäîâàòåëüíîñòÿìèðàçíîé äëèíû âîçíèêàåò âîçìîæíîñòü îï-òèìèçèðîâàòü ñóììàðíóþ äëèíó êîäà. Äëÿýòîãî íàäî çíàòü ÷àñòîòó, ñ êîòîðîé âñòðå-÷àþòñÿ áóêâû. (Çàìåòèì, ÷òî äëÿ êîäèðîâà-íèÿ àëôàâèòà èç äâóõ áóêâ ÷àñòîòà íå èìååòçíà÷åíèÿ, òàê êàê äëèíà êîäà êàæäîé áóêâûðàâíà 1). Íàïðèìåð, åñëè �à� âñòðå÷àåòñÿâäâîå ÷àùå, ÷åì �á� è �â�, àïîñëåäíèå âñòðå÷à-þòñÿ ïîðîâíó,òî â ñðåäíåì íàòåêñò èç 1000áóêâ ïîíàäîáèò-ñÿ 1500 äâîè÷-íûõ öèôð. Åñëèáû ìû çàøèô-ðîâàëè áóêâû ïî äðóãîìó, íàïðèìåð, �â� � 0,�á� � 10, �à� � 11, òî äëèíà êîäà íà êàæäûå1000 áóêâ â ñðåäíåì ðàâíÿëàñü áû 1750.Ñðàâíèâàÿ øèôðîâêó àëôàâèòà èç äâóõ èòðåõ áóêâ, ìîæíî ñôîðìóëèðîâàòü èäåþæàäíîãî àëãîðèòìà: íàäî óäëèíèòü êîä îä-íîé èç áóêâ äâóìÿ ñïîñîáàìè � äîáàâëåíè-åì íóëÿ èëè åäèíèöû. Ýòè áîëåå äëèííûåêîäû íóæíî èñïîëüçîâàòü äëÿ äâóõ ìåíååâñòðå÷àþùèõñÿ áóêâ.

Òåïåðü ìîæíî ñôîðìóëèðîâàòü ñàìàëãîðèòì Õàôôìåíà.

Åãî ïåðâàÿ ÷àñòü ñâîäèò çàäà÷ó ê çàäà-÷å êîäèðîâàíèÿ àëôàâèòà ñ äâóìÿ ñèìâîëàìè.

ÏÎÊÀ â àëôàâèòå íå îñòàëèñü äâå áóêâû1) óïîðÿäî÷èòü áóêâû â ïîðÿäêå óáûâàíèÿ÷àñòîò2) çàìåíèòü äâå ïîñëåäíèå íàèáîëåå ðåä-êèå áóêâû íîâîé áóêâîé, ÷àñòîòà êîòîðîéðàâíà ñóììå ÷àñòîò çàìåíÿåìûõ áóêâ.

ÊÎÍÅÖ ÖÈÊËÀ

Page 3: ЖАДНЫЕ АЛГОРИТМЫ

51

Æàäíûå àëãîðèòìû

ÇÀÎ×ÍÀß ØÊÎËÀ ÑÎÂÐÅÌÅÍÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Ïðèìåð:

Ïîñëå óïîðÿäî÷åíèÿ

Ïîñëå ñëèÿíèÿ ïîñëåäíèõ áóêâ

Ïîñëå âòîðîãî øàãà

Ïîñëå òðåòüåãî øàãà

Çàìå÷àíèå. Àëãîðèòì ìîæíî ñäåëàòüáîëåå ýôôåêòèâíûì, åñëè îòñîðòèðîâàòüáóêâû ïî óáûâàíèþ ÷àñòîò ïåðåä íà÷àëîìöèêëà, à â öèêëå òîëüêî âñòàâëÿòü íîâóþáóêâó (ïîëó÷åííóþ ñëèÿíèåì äâóõ ñàìûõðåäêî âñòðå÷àþùèõñÿ) â òàêîå ìåñòî ïîñ-ëåäîâàòåëüíîñòè, ÷òîáû ñîõðàíèòü ñâîéñòâîóáûâàíèÿ ÷àñòîò.

óïîðÿäî÷èòü áóêâû â ïîðÿäêå óáûâàíèÿ ÷àñ-

òîòÏÎÊÀ â àëôàâèòå íå îñòàëèñü äâå áóêâû,çàìåíèòü äâå ïîñëåäíèå íàèáîëåå ðåäêèå

áóêâû íîâîé áóêâîé, ÷àñòîòà êîòîðîé ðàâ-íà ñóììå ÷àñòîò çàìåíÿåìûõ áóêâ;âñòàâèòü íîâóþ áóêâó â òî ìåñòî, ãäå åå

÷àñòîòà íå íàðóøèò ïîðÿäêà.ÊÎÍÅÖ ÖÈÊËÀ

Âòîðàÿ ÷àñòü àëãîðèòìà îñóùåñòâëÿ-åò êîäèðîâàíèå:

Ñîïîñòàâèòü ïåðâîé áóêâå êîä 0, âòîðîé -êîä 1ÏÎÊÀ íå âñå èñõîäíûå áóêâû ïîëó÷èëè äâî-

è÷íûå êîäûÅÑËÈ áóêâà ïîëó÷åíà ñëèÿíèåì äâóõ äðó-ãèõ, ñîïîñòàâèòü èì êîäû, ïîëó÷åííûå

äîáàâëåíèåì 0 èëè 1 ê êîäó ðàñùåïëÿå-ìîé áóêâû.

ÊÎÍÅÖ ÅÑËÈ

ÊÎÍÅÖ ÖÈÊËÀ

Ïðèìåð.

Çàäàíèå 2.

Óðîâåíü 1. Ïî àëãîðèòìó Õàôôìåíàíàéòè äâîè÷íûå êîäû áóêâ ïî òàáëèöå ÷àñòîò

Óðîâåíü 2. Íà âõîä ïðîãðàììû ïîäà-åòñÿ ñíà÷àëà ÷èñëî áóêâ â àëôàâèòå, çàòåìïîî÷åðåäíî ñàìè áóêâû è èõ ÷àñòîòû. Íàâûõîäå àëãîðèòìà äîëæíà áûòü ïîñëåäîâà-òåëüíîñòü èç áóêâ è äâîè÷íûõ êîäîâ ýòèõáóêâ.

Ïðèìåð.Ââîä: Âûâîä:3 àà 00.1 áá 100.02 ââ 110.03

Óðîâåíü 3. Äîêàçàòü îïòèìàëüíîñòüêîäèðîâàíèÿ ïî àëãîðèòìó Õàôôìåíà.

Æàäíûé àëãîðèòì â òîé ôîðìå, êàêîí ðåàëèçîâàí â êîäèðîâàíèè Õàôôìå-íà, èñïîëüçóåòñÿ ïðè ðåøåíèè î÷åíü âàæ-íîé â âû÷èñëèòåëüíîé ìàòåìàòèêå çàäà-÷è. Ýòà çàäà÷à ñâÿçàíà ñ ïîòåðåé òî÷íîñ-òè ïðè âûïîëíåíèè ïðîöåññîðîì îïåðà-öèé ñ âåùåñòâåííûìè ÷èñëàìè. Ðàññìîò-ðèì âûðàæåíèå (1 + 10�100�1) / 10�100.

Î÷åâèäíî, ÷òî îòâåò ðàâåí 1, îäíàêîêîìïüþòåð âûäàñò 0. Ïî÷åìó? Ïðè ñëîæå-

î à ê ì ø0,2 0,1 0,08 0,06 0,01

î à ê ìø0,2 0,1 0,08 0,07

î êìø à0,2 0,15 0,1

àêìø î0,25 0,2

à ì ø ê î0,1 0,06 0,01 0,08 0,2

àêìø î0 1

î à êìø1 00 01

î à ê ìø1 00 010 011

î à ê ì ø1 00 010 0110 0111

à á ë ò ó ô ö ÿ0,1 0,02 0,03 0,04 0,008 0,005 0,003 0,01

Page 4: ЖАДНЫЕ АЛГОРИТМЫ

52

Íîâèêîâ Ô.À., Ïîçäíÿêîâ Ñ.Í.

© ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 2, 2005 ã.

íèè 1 + 10�100 êîìïüþòåð äàñò 1, òàê êàê÷èñëî õðàíèìûõ â ìàíòèññå ÷èñëà öèôð îã-ðàíè÷åíî òåõíè÷åñêè, à â ýòîì ÷èñëå ìàí-òèññà ñîäåðæèò 101 öèôðó, ïîýòîìó ïðîèçîé-äåò îêðóãëåíèå è ìëàäøèå öèôðû áóäóò îò-áðîøåíû. Îäíàêî, åñëè èçìåíèòü ïîðÿäîêäåéñòâèé è ñíà÷àëà âû÷åñòü 1 � 1, à ïîòîìïðèáàâèòü 10�100, òî ïðîáëåì íå áóäåò.

Ðàññìîòðèì áîëåå ïðîñòóþ çàäà÷óñëîæåíèÿ áîëüøîãî êîëè÷åñòâà âåùåñòâåí-íûõ ÷èñåë. Òîãäà ñòðàòåãèÿ ïîâòîðÿþùåé-ñÿ â öèêëå çàìåíû äâóõ ñàìûõ ìàëåíüêèõñëàãàåìûõ èõ ñóììîé áóäåò, î÷åâèäíî, äà-âàòü ñàìóþ ìàëåíüêóþ ïîãðåøíîñòü.

Çàäàíèå 3.Ïóñòü íàø âîîáðàæàåìûé êîìïüþòåð

ïîçâîëÿåò ðàáîòàòü ñ ÷èñëàìè, ó êîòîðûõ÷èñëî öèôð ìàíòèññû è ïîðÿäêà íå ïðåâû-øàåò 2. Íàïðèìåð, 1,2 ⋅ 1012 è 25 ⋅ 10�7.

Óðîâåíü 1. Ïðèâåäèòå ïðèìåð ñóììûïîëîæèòåëüíûõ ÷èñåë, êîòîðàÿ ìåíÿåòñÿ ïðèïåðåñòàíîâêå ñëàãàåìûõ.

Óðîâåíü 2. Íàïèøèòå ïðîãðàììó, âû-ïîëíÿþùóþ ñóììèðîâàíèå ïî æàäíîìó àë-ãîðèòìó. Íà âõîä ïîäàåòñÿ ñíà÷àëà ÷èñëîñëàãàåìûõ, çàòåì ñàìè ñëàãàåìûå, â êîòî-ðûõ ìàíòèññà è ïîðÿäîê îòäåëÿþòñÿ ïðîáå-ëîì, íà âûõîäå � ñóììà.

Ïðèìåð.

Ââîä.21.2 1225 -7Âûâîä.1.2 12

Óðîâåíü 3.Èññëåäóéòå âåëè÷èíó îòíîñèòåëüíîé

ïîãðåøíîñòè ïðè ñóììèðîâàíèè n ÷èñåë(îòíîñèòåëüíàÿ ïîãðåøíîñòü îïðåäåëÿåòñÿêàê àáñîëþòíàÿ âåëè÷èíà ÷àñòíîãî îò äåëå-íèÿ ðàçíîñòè òî÷íîãî è âû÷èñëåííîãî çíà-÷åíèé ñóììû íà åå òî÷íîå çíà÷åíèå). Îïðå-äåëèòå ìàêñèìàëüíîå óìåíüøåíèå ïîãðåø-íîñòè ïðè ïðèìåíåíèè æàäíîãî àëãîðèòìàê ñóììèðîâàíèþ n ÷èñåë.

ÑÒÐÀÒÅÃÈß ÑÀÏÎÆÍÈÊÀ

 îáÿçàííîñòè âîåííîãî ñàïîæíèêàâõîäèò áûñòðî ÷èíèòü ïðèíåñåííóþ îáóâü.Íà÷àëüñòâî îöåíèâàåò ðàáîòó ñàïîæíèêà ïîêîëè÷åñòâó ïî÷èíåííîé îáóâè, íåçàâèñèìîîò òîãî, íàñêîëüêî òðóäîåìîê ðåìîíò. Êàêñàïîæíèêó îðãàíèçîâàòü ñâîþ ðàáîòó, ÷òî-áû âûãëÿäåòü â ãëàçàõ íà÷àëüñòâà íàèáîëååâûèãðûøíî?

Ïîñìîòðèì, ÷òî åìó äàñò æàäíûé àë-ãîðèòì. Äëÿ ýòîãî îí äîëæåí ïîñëå ïî÷èí-êè î÷åðåäíîé ïàðû âûáðàòü èç èìåþùèõñÿçàêàçîâ òîò, íà êîòîðûé ïîòðåáóåòñÿ ìåíü-øå âðåìåíè.

Áóäåò ëè ýòîò àëãîðèòì îïòèìàëüíûì?Äà. Âåäü ëþáîé äðóãîé âûáîð î÷åðåä-

íîé ïàðû îáóâè äëÿ ïî÷èíêè îòäàëèò ìî-ìåíò çàâåðøåíèÿ ðàáîòû. Ïîýòîìó ëþáàÿäðóãàÿ ñòðàòåãèÿ íå ìîæåò áûòü ëó÷øå ýòîé.

Çàäàíèå 4. Ïîäâåäåíèå ëàðüêîâ ïîäîáùóþ êðûøó.

Íà ïðÿìîé ðàñïîëîæåíû îòðåçêè[ai; bi], ãäå i = 1, ..., n. Âñå âìåñòå îíè ïîë-íîñòüþ è âîçìîæíî ñ èçáûòêîì ïîêðûâàþòîòðåçîê [1; 1000]. Íóæíî âûáðàòü èç íèõíàèìåíüøåå êîëè÷åñòâî òàê, ÷òîáû îíè âñåæå ïîêðûâàëè îòðåçîê [1; 1000].

Óðîâåíü 1. Íàéòè íàèìåíüøåå ïîêðû-òèå ñðåäè ñòà îòðåçêîâ [k2; 2k2 + 20], ãäåk = 1, ..., 100.

Óðîâåíü 2. Íàïèñàòü ïðîãðàììó, íà-õîäÿùóþ ìèíèìàëüíîå ïîêðûòèå. Íà âõîäïîäàåòñÿ ÷èñëî îòðåçêîâ â ïîêðûòèè è ïîñ-ëåäîâàòåëüíîñòü ïàð ÷èñåë � íà÷àë è êîí-öîâ îòðåçêîâ. Íà âûõîäå � ïîñëåäîâàòåëü-íîñòü ïàð ÷èñåë � íà÷àë è êîíöîâ îòðåçêîâìèíèìàëüíîãî ïîêðûòèÿ.

Page 5: ЖАДНЫЕ АЛГОРИТМЫ

53

Æàäíûå àëãîðèòìû

ÇÀÎ×ÍÀß ØÊÎËÀ ÑÎÂÐÅÌÅÍÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Ïðèìåð.Ââîä:31 1005 60090 1000Âûâîä:1 10090 1000.

Óðîâåíü 3. Îáîñíîâàòü êîððåêòíîñòüïîñòðîåííîãî àëãîðèòìà.

Ïîäûòîæèì ïðèìåðû.1) Æàäíûé àëãîðèòì íàõîäèò îïòè-

ìàëüíîå ðåøåíèå çàäà÷è. Åñëè ðàññìîòðåòüâñå âîçìîæíûå ðåøåíèÿ è íà íèõ ââåñòèâåñîâóþ ôóíêöèþ, òî æàäíûé àëãîðèòì íà-õîäèò íàèìåíüøåå (èëè íàèáîëüøåå) çíà-÷åíèå ýòîé ôóíêöèè.

2) Îïòèìàëüíîå ðåøåíèå ñòðîèòñÿ ïîøàãàì. Íà êàæäîì øàãå ÷àñòè÷íîå ðåøå-íèå ïîïîëíÿåòñÿ íîâûì ýëåìåíòîì, êîòî-ðûé âûáèðàåòñÿ èç äîïóñòèìîãî ïîäìíîæå-ñòâà. Äëÿ ýòîãî íóæíû òðè ïðîöåäóðû: ïðî-öåäóðà âûáîðà êàíäèäàòà äëÿ ðàñøèðåíèÿ÷àñòè÷íîãî ðåøåíèÿ, ïðîöåäóðà îïðåäåëå-íèÿ äîïóñòèìîñòè ýòîãî êàíäèäàòà, ïðîöå-äóðà îïðåäåëåíèÿ, ÿâëÿåòñÿ ëè ðàñøèðåí-íîå ÷àñòè÷íîå ðåøåíèå ïîëíûì ðåøåíèåìçàäà÷è.

Ïðîèëëþñòðèðóåì ýòè øàãè íà ïðè-âåäåííûõ ïðèìåðàõ.

Äëÿ çàäà÷è ðàçëîæåíèÿ ÷èñëà â ñóì-ìó ìèíèìàëüíîãî êîëè÷åñòâà ñëàãàåìûõ çà-äàííîãî âèäà âåñîâîé ôóíêöèåé ÿâëÿåòñÿ÷èñëî ñëàãàåìûõ. Ïðîöåäóðà âûáîðà î÷åðåä-íîãî êàíäèäàòà-ñëàãàåìîãî îïðåäåëÿåòñÿ âû-áîðîì íàèáîëüøåãî èç ñëàãàåìûõ, íå ïðå-âûøàþùåãî óæå âûáðàííûõ. Ïðîöåäóðà îï-ðåäåëåíèÿ äîïóñòèìîñòè êàíäèäàòà îïðåäå-ëÿåòñÿ òåì, íå ïðåâûøàåò ëè íîâàÿ ñóììàèñõîäíîãî ÷èñëà, à ïðîöåäóðà îïðåäåëåíèÿ,ÿâëÿåòñÿ ëè ÷àñòè÷íîå ðåøåíèå ïîëíûì, ñî-ñòîèò â ïðîâåðêå ðàâåíñòâà ñóììû è èñõîä-íîãî ÷èñëà.

Äëÿ çàäà÷è ñàïîæíèêà âåñîâîé ôóíê-öèåé ÿâëÿåòñÿ êîëè÷åñòâî ïî÷èíåííîé îáó-âè çà äàííûé ïðîìåæóòîê âðåìåíè. Ïðîöå-äóðà âûáîðà î÷åðåäíîãî êàíäèäàòà � ïàðûîáóâè äëÿ ïî÷èíêè � ñîñòîèò â îöåíêå âðå-

ìåíè ïî÷èíêè èìåþùåéñÿ íà äàííûé ìî-ìåíò íåîòðåìîíòèðîâàííîé îáóâè è âûáîðàïàðû, òðåáóþùåé ìèíèìàëüíîãî ïî âðåìå-íè ðåìîíòà. Ïðîöåäóðà ïðîâåðêè äîïóñòè-ìîñòè ñîñòîèò â ïðîâåðêå òîãî, ÷òî âðåìÿïî÷èíêè âûáðàííîé ïàðû íå ïðåâûøàåò çà-äàííîå, à ïðîöåäóðà ïðîâåðêè òîãî, ÷òî ÷à-ñòè÷íîå ðåøåíèå ÿâëÿåòñÿ ïîëíûì, � â ïðî-âåðêå òîãî, ÷òî âûáîð íîâîé ïàðû ïðèâî-äèò ê ïðåâûøåíèþ âðåìåíè ïî÷èíêè.

Çàäàíèå 5. Åãèïåòñêèå äðîáè.

Ðàçëîæåíèå ïðàâèëüíîé äðîáè â ñóì-ìó ðàçëè÷íûõ äðîáåé ñ ÷èñëèòåëåì 1 íàçû-âàåòñÿ ðàçëîæåíèåì íà åãèïåòñêèå äðîáè.Íàïðèìåð:

39/50 = 1/2 + 1/4 + 1/34 + 1/1700

Óðîâåíü 1. Âîñïîëüçóéòåñü äëÿ ðåøå-íèÿ çàäà÷è æàäíûì àëãîðèòìîì, êîòîðûéíà êàæäîì øàãå âûáèðàåò ìàêñèìàëüíîáîëüøîå ñëàãàåìîå óêàçàííîãî âèäà.

à) Ðàçëîæèòå ïî ýòîìó àëãîðèòìóäðîáü 17/48.

á) Óêàæèòå âåñîâóþ ôóíêöèþ, ïðî-öåäóðó âûáîðà î÷åðåäíîãî êàíäèäàòà, ïðî-öåäóðó äîïóñòèìîñòè è ïðîöåäóðó ïðîâåð-êè îêîí÷àíèÿ ðàáîòû àëãîðèòìà.

Óðîâåíü 2. Íàïèøèòå ïðîöåäóðó ðàç-ëîæåíèÿ íà åãèïåòñêèå äðîáè. Íà âõîä ïî-äàþòñÿ äâà ÷èñëà � ÷èñëèòåëü è çíàìåíà-òåëü. Íà âûõîäå � ïîñëåäîâàòåëüíîñòü çíà-ìåíàòåëåé ðàçëîæåíèÿ.

Ïðèìåð.Ââîä:3950

Page 6: ЖАДНЫЕ АЛГОРИТМЫ

54

Íîâèêîâ Ô.À., Ïîçäíÿêîâ Ñ.Í.

© ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 2, 2005 ã.

Âûâîä:24341700

Óðîâåíü 3.à) Äîêàæèòå, ÷òî æàäíûé àëãîðèòì

âñåãäà ðåøàåò çàäà÷ó.á) Ïðèâåäèòå ïðèìåð, ïîêàçûâàþùèé,

÷òî ðàçëîæåíèå íà åãèïåòñêèå äðîáè íå ÿâ-ëÿåòñÿ åäèíñòâåííûì.

â) Èññëåäóéòå âîïðîñ îá îïòèìàëüíî-ñòè æàäíîãî àëãîðèòìà: äàåò ëè îí ìèíè-ìàëüíîå ÷èñëî ñëàãàåìûõ.

ÌÀÒÐÎÈÄÛ

Èçó÷èì òåïåðü âîïðîñ, â êàêèõ ñëó-÷àÿõ æàäíûé àëãîðèòì äàåò îïòèìàëüíîåðåøåíèå. Îêàçûâàåòñÿ, åñëè çàäà÷à èìååòäåëî ñ ïîèñêîì îïòèìóìà íà ìíîæåñòâå,èìåþùåì ñòðóêòóðó ìàòðîèäà, òî æàäíûéàëãîðèòì âñåãäà äàñò îïòèìàëüíîå ðåøåíèå,ñ êàêîé áû âåñîâîé ôóíêöèåé ýòî íå áûëîñâÿçàíî (âåñîâàÿ ôóíêöèÿ îïðåäåëÿåò ÷èñ-ëåííîå çíà÷åíèå ðåøåíèÿ).

×òî æå òàêîå ìàòðîèä?Ìàòðîèä � ýòî ñåìåéñòâî ïîäìíî-

æåñòâ èñõîäíîãî ìíîæåñòâà, îáëàäàþùååñâîéñòâàìè:

1) ïóñòîå ìíîæåñòâî ïðèíàäëåæèò ýòî-ìó ñåìåéñòâó;

2) åñëè ìíîæåñòâî ïðèíàäëåæèò ýòî-ìó ñåìåéñòâó, òî è âñå åãî ïîäìíîæåñòâàòàêæå ïðèíàäëåæàò ñåìåéñòâó;

3) åñëè îäíî èç ìíîæåñòâ ýòîãî ñå-ìåéñòâà èìååò íà îäèí ýëåìåíò áîëüøå äðó-ãîãî, òî â áîëüøåì ìíîæåñòâå åñòü ýëåìåíò,íå ïðèíàäëåæàùèé ìåíüøåìó è òàêîé, ÷òîåãî äîáàâëåíèå ê ìåíüøåìó ìíîæåñòâó ïî-ðîæäàåò ìíîæåñòâî èç äàííîãî ñåìåéñòâà.

Ðàññìîòðèì ñ ýòîé òî÷êè çðåíèÿ çà-äà÷è, ðàçîáðàííûå âûøå.

Çàäà÷à î ðàçìåíå êóïþðû äîñòîèíñòâàN. Ðàññìîòðèì ìíîæåñòâî äîñòóïíûõ êóïþð. êà÷åñòâå ñåìåéñòâ ïîäìíîæåñòâ ðàññìîò-ðèì ïîäìíîæåñòâà «ðàçìåíà», òî åñòü òà-êèå, ñóììàðíîå çíà÷åíèå êîòîðûõ ðàâíî N

(ïîëíûé ðàçìåí) èëè ìåíüøå N (÷àñòè÷íûéðàçìåí).

Ïðîâåðèì ñâîéñòâà ìàòðîèäà:1) ïóñòîå ìíîæåñòâî �

ýòî «ïóñòîé» ðàçìåí, êîã-äà âçàìåí êóïþðû íè-÷åãî íå äàåòñÿ;

2) åñëè âçÿòüïîäìíîæåñòâî ðàçìå-íà, ïîëó÷èì òàêæåðàçìåí (÷àñòè÷íûé,åñëè ïîäìíîæåñòâî íåñîâïàäàåò ñ ìíîæå-ñòâîì);

3) ýòî ñâîéñòâîìîæåò èìåòü ìåñòîèëè íåò, â çàâèñèìîñòè îò ñîñòàâà êóïþð;íàïðèìåð, åñëè ðàçìåí ìîæíî ïðîèçâåñòèðàçíûìè ïî êîëè÷åñòâó íàáîðàìè êóïþð,ïðè÷åì ðàçìåí ñ ìåíüøèì ÷èñëîì êóïþð �ïîëíûé, òî ñâîéñòâî âûïîëíåíî íå áóäåò.Íàïðèìåð, åñëè N = 7, à ðàçìåðû êóïþð 5,4, 3, 1. Òîãäà 4 + 3 è 5 + 1 + 1 � ïðàâèëüíûåðàçìåíû, íî ê ïåðâîìó ðàçìåíó äîáàâèòü åùåîäíó êóïþðó íåëüçÿ, è ïîäìíîæåñòâà «ðàç-ìåíà» íå îáðàçóþò ìàòðîèäà. Åñëè æå íî-ìèíàëû êóïþð � ñòåïåíè äâîéêè, òî òàêîãîíå áóäåò â ñèëó îäíîçíà÷íîñòè ïðåäñòàâëå-íèÿ ÷èñåë â äâîè÷íîé ñèñòåìå, è ìû ïîëó-÷èì ìàòðîèä.

Çàäàíèå 6.

Óðîâåíü 3. Ñôîðìóëèðóéòå íåîáõî-äèìîå è äîñòàòî÷íîå óñëîâèå íà ñîñòàâ êó-ïþð, ÷òîáû îïèñàííàÿ âûøå ñòðóêòóðà áûëàìàòðîèäîì.

Íàéäåííîå óñëîâèå îôîðìèòå ïðî-ãðàììîé, íà âõîä êîòîðîé ïîäàåòñÿ ÷èñëîN è íîìèíàëû êóïþð. Íà âûõîäå � çíà÷å-íèå 1, åñëè ñòðóêòóðà ÿâëÿåòñÿ ìàòðîèäîìè 0 â èíîì ñëó÷àå.

Ïðèìåð.Ââîä.75431Âûâîä.0

Page 7: ЖАДНЫЕ АЛГОРИТМЫ

55

Æàäíûå àëãîðèòìû

ÇÀÎ×ÍÀß ØÊÎËÀ ÑÎÂÐÅÌÅÍÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Ðàññìîòðèì çàäà÷ó ñàïîæíèêà. Óïðî-ñòèì åå, ñ÷èòàÿ, ÷òî ñàïîæíèê ñíà÷àëà ñî-áðàë çàêàçû, à ïîòîì âçÿëñÿ çà èõ èñïîëíå-íèå. Ðàññìîòðèì ñåìåéñòâî âñåõ ïîäìíî-æåñòâ çàêàçîâ, êîòîðûå ìîãóò áûòü ïîñëå-äîâàòåëüíî âûïîëíåíû çà âðåìÿ, ïðåäîñòàâ-ëåííîå ñàïîæíèêó. Ïðîâåðèì, îáëàäàåò ëèäàííîå ñåìåéñòâî ñâîéñòâàìè ìàòðîèäà:

1) ñàïîæíèê ìîæåò íå âûïîëíèòü íèîäíîãî çàêàçà, åñëè ïðîäîëæèòåëüíîñòü âû-ïîëíåíèÿ êàæäîãî âåëèêà, çíà÷èò, ïóñòîå

ìíîæåñòâî âõîäèò â ñåìåéñòâî, è ïåðâîåñâîéñòâî ìàòðîèäà èìååò ìåñòî;

2) åñëè âçÿòü ïîäìíîæåñòâî ìíîæåñòâà,âîøåäøåãî â ñåìåéñòâî, òî îíî, î÷åâèäíî,áóäåò äîïóñòèìûì, òàê êàê îïèñûâàåò ñèòó-àöèþ, êîãäà ñàïîæíèê íå âûïîëíèë ÷àñòüçàêàçîâ, êîòîðûå ìîã áû ñäåëàòü çà îòâåäåí-íîå åìó âðåìÿ (ïðîáëåìà ïåðåêóðîâ); çíà-÷èò, âòîðîå ñâîéñòâî ìàòðîèäà âûïîëíåíî;

3) ñ âûïîëíåíèåì òðåòüåãî ñâîéñòâàìàòðîèäà äåëî îáñòîèò ñëîæíåå; åñëè ñðàâ-íèòü, íàïðèìåð, ìíîæåñòâî èç äâóõ ïðîäîë-æèòåëüíûõ ðàáîò, çàíèìàþùèõ âñå îòâåäåí-íîå âðåìÿ ñî ìíîæåñòâîì èç òðåõ íåáîëü-øèõ ðàáîò, òàêæå óêëàäûâàþùèõñÿ â îòâå-äåííîå âðåìÿ, òî äîáàâèòü ê ïåðâîìó ìíî-æåñòâó ðàáîò åùå îäíó ñ ñîõðàíåíèåì îòâå-äåííîãî âðåìåíè óæå íå óäàñò-ñÿ, è òðåòüå ñâîéñòâî ìàòðîèäàîêàæåòñÿ íåâûïîëíåííûì.

Òàêèì îáðàçîì, êàê âèäíî,ñòðóêòóðîé ìàòðîèäà îáëàäàþòíå âñå çàäà÷è.

Îäíàêî, åñëè çàäà÷à îáëà-äàåò ñòðóêòóðîé ìàòðîèäà, òîìîæíî ñìåëî ïðèìåíÿòü æàäíûéàëãîðèòì, ïîñêîëüêó îí âñåãäàíàéäåò îïòèìàëüíîå ðåøåíèå.

Äåéñòâèòåëüíî, ïóñòü äëÿ îïðåäåëåííîñòèðåøàåòñÿ çàäà÷à íà ìàêñèìóì, à ñåìåéñòâîìíîæåñòâ, èç êîòîðûõ íóæíî âûáðàòü ìíî-æåñòâî ñ ìàêñèìàëüíûì âåñîì, îáëàäàåòñâîéñòâàìè ìàòðîèäà. Ïîñêîëüêó æàäíûéàëãîðèòì âûáèðàåò êàíäèäàòîâ â ïîðÿäêåíåâîçðàñòàíèÿ âåñîâ, óäîáíî ñ÷èòàòü, ÷òî âîâñåõ ìíîæåñòâàõ ýëåìåíòû ðàñïîëîæåíû âïîðÿäêå íåâîçðàñòàíèÿ âåñîâ. Òîãäà ëåãêîçàìåòèòü, ÷òî æàäíûé àëãîðèòì íå òîëüêîíàéäåò äîïóñòèìîå ìíîæåñòâî íàèáîëüøå-ãî âåñà, íî è êàæäûé ýëåìåíò â ýòîì ìíî-æåñòâå íå ìåíüøå ýëåìåíòà, ñòîÿùåãî íàòîì æå ïî ïîðÿäêó ìåñòå â ëþáîì äðóãîìäîïóñòèìîì ìíîæåñòâå.  ñàìîì äåëå, åñëèáû ñóùåñòâîâàëî äîïóñòèìîå ìíîæåñòâî,ïåðâûé ýëåìåíò êîòîðîãî áûë áû áîëüøåïåðâîãî ýëåìåíòà ìíîæåñòâà, âûáðàííîãîæàäíûì àëãîðèòìîì, òî æàäíûé àëãîðèòìâûáðàë áû èìåííî ýòîò ïåðâûé ýëåìåíò!Âåäü ïî âòîðîìó ñâîéñòâó ìàòðîèäà ëþáîåïîäìíîæåñòâî äîïóñòèìîãî ìíîæåñòâà äî-ïóñòèìî, à çíà÷èò, è ñàì ãèïîòåòè÷åñêèéïåðâûé ýëåìåíò äîïóñòèì. È òàê äàëåå, åñëèáû ñóùåñòâîâàëî äîïóñòèìîå ìíîæåñòâî, âêîòîðîì i-ûé ýëåìåíò áîëüøå i-îãî ýëåìåí-òà â ìíîæåñòâå, âûáðàííîì æàäíûì àëãî-ðèòìîì, òî áûë áû âûáðàí ýòîò áîëüøèéýëåìåíò, ÷òî âñåãäà âîçìîæíî ïî òðåòüåìóñâîéñòâó ìàòðîèäîâ.

Åñëè æå çàäà÷à íå îáëàäàåò ñòðóêòó-ðîé ìàòðîèäà, òî ýòî åùå íå çíà÷èò, ÷òîæàäíûé àëãîðèòì íå íàéäåò îïòèìàëüíîãîðåøåíèÿ. Âñå çàâèñèò îò îñîáåííîñòåé çàäà-÷è, â ÷àñòíîñòè, îò âåñîâîé ôóíêöèè. Íà-ïðèìåð, â çàäà÷å î ñàïîæíèêå æàäíûé àëãî-ðèòì íàõîäèò îïòèìàëüíîå ðåøåíèå, õîòÿ ýòàçàäà÷à è íå èìååò ñòðóêòóðû ìàòðîèäà.

ÆÀÄÍÛÉ ÏÅÐÅÁÎÐ

Èíòåðåñíîå ïðèìåíåíèåèìååò æàäíûé àëãîðèòì âðåøåíèè ïåðåáîðíûõ çàäà÷.Åñëè â çàäà÷å íóæíî íàéòèëþáîå ðåøåíèå (íàïðèìåð,âûõîä èç ëàáèðèíòà), òî îòòîãî, â êàêîì ïîðÿäêå ïå-ðåáèðàþòñÿ âàðèàíòû, çàâè-ñèò, êàê áûñòðî ìû «íà-

Page 8: ЖАДНЫЕ АЛГОРИТМЫ

56

Íîâèêîâ Ô.À., Ïîçäíÿêîâ Ñ.Í.

© ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 2, 2005 ã.

òêíåìñÿ» íà ðåøåíèå çàäà÷è. Ïîýòîìó, ëþ-áûå ýìïèðè÷åñêèå ñîîáðàæåíèÿ, êîòîðûåìîãóò ïîìî÷ü îðãàíèçîâàòü ïåðåáîð âàðèàí-òîâ òàê, ÷òîáû áûñòðåå íàòêíóòüñÿ íà ðåøå-íèå, áóäóò ïîëåçíû.

Ðàññìîòðèì, íàïðèìåð, êëàññè÷åñêóþçàäà÷ó: îáîéòè õîäîì êîíÿ âñå êëåòêè øàõ-ìàòíîé äîñêè, íå ïðîõîäÿ íè ÷åðåç îäíóêëåòêó äâàæäû.

Ñóùåñòâóåò ñëåäóþùèé æàäíûé àëãî-ðèòì îáõîäà äîñêè: î÷åðåäíîé õîä íàäî äå-ëàòü íà òàêóþ ñâîáîäíóþ êëåòêó, èç êîòî-ðîé ñóùåñòâóåò ìèíèìàëüíîå êîëè÷åñòâîõîäîâ íà äðóãèå ñâîáîäíûå êëåòêè. Íàïðè-ìåð, åñëè ìû íà÷èíàåì ñ óãëà, òî ïåðâûéõîä ìîæíî ñäåëàòü ëþáîé èç äâóõ, òàê êàêîíè ñèììåòðè÷íû îòíîñèòåëüíî äèàãîíàëè.Äëÿ âòîðîãî õîäà åñòü 5 âàðèàíòîâ, èç íèõòîëüêî äâà îáëàäàþò ñâîéñòâîì ìèíèìàëü-íîñòè. Âûáðàâ îäèí èç íèõ (ðèñóíîê 1), âû-÷èñëÿåì îöåíêè ñëåäóþùèõ ïîòåíöèàëüíûõõîäîâ (ðèñóíîê 1).

Çàìåòèì, ÷òî âàðèàíò âûáîðà î÷åðåä-íîãî õîäà íå åäèíñòâåííûé, êðîìå òîãî, íà-÷èíàòü ìîæíî ñ ðàçëè÷íûõ êëåòîê. Ðàññìàò-ðèâàòü ìîæíî äîñêè äðóãèõ ðàçìåðîâ èôîðì. Òàêèì îáðàçîì, çàäà÷à î òîì, ðåøàåòëè æàäíûé àëãîðèòì çàäà÷ó îáõîäà äîñêè,ïðåäñòàâëÿåò ñîáîé èíòåðåñíóþ è ñëîæíóþçàäà÷ó. Îäíàêî äàæå íà òåõ äîñêàõ, ãäå ýòîòàëãîðèòì íå ðàáîòàåò, åãî ìîæíî èñïîëüçî-âàòü äëÿ îïðåäåëåíèÿ î÷åðåäíîñòè õîäîâ ïðèïîëíîì ïåðåáîðå âàðèàíòîâ. Ìîæíî íàäå-ÿòüñÿ, ÷òî èñïîëüçîâàíèå ýòîãî àëãîðèòìàóñêîðèò íàõîæäåíèå ðåøåíèÿ.

Çàäàíèå 7.

Óðîâåíü 1.à) Ñôîðìóëèðóéòå äîïîëíèòåëüíûå

ïðèçíàêè äëÿ ñðàâíåíèÿ õîäîâ òàê, ÷òîáû â

çàäà÷å îá îáõîäå êîíåì øàõìàòíîé äîñêèíà êàæäîì øàãå èìåëñÿ ðîâíî îäèí âàðè-àíò âûáîðà õîäà. Íàïðèìåð, ïðè ðàâíîì÷èñëå «âûõîäîâ» èç êëåòêè, ñðàâíèòü ðàñ-ñòîÿíèÿ äî íèæíåãî êðàÿ äîñ-êè, â ñëó÷àå ðàâåíñòâà èýòèõ ïðèçíàêîâ, ñðàâíèòüðàññòîÿíèÿ äî ëåâîãîêðàÿ äîñêè è òàê äàëåå.

á) Ïðèâåäèòå ïðè-ìåð äîñêè ñ âîçìîæíîìåíüøèì ÷èñëîì êëåòîê,äëÿ êîòîðîé æàäíûé àë-ãîðèòì íàõîäèò ðåøåíèå,è ïðèìåð äîñêè, êîãäà îíðåøåíèÿ íå äàåò.

Óðîâåíü 2. Íàïèøèòå ïðîãðàììó, ïðî-âåðÿþùóþ æàäíûé àëãîðèòì íà ïðîèçâîëü-íîé äîñêå. Äëÿ îäíîçíà÷íîñòè âûáîðà ïðèíàëè÷èè õîäîâ ñ ðàâíûì ÷èñëîì «âûõîäîâ»áåðåòñÿ ìåíüøèé â àëôàâèòíîì ïîðÿäêå (íà-ïðèìåð, a4 ìåíüøå a7, êîòîðûé, â ñâîþî÷åðåäü, ìåíüøå c2 è ò. ä.).

Íà âõîä ïîäàåòñÿ ñíà÷àëà ÷èñëî êëå-òîê äîñêè, çàòåì ñàìè êëåòêè â ñòàíäàðò-íûõ îáîçíà÷åíèÿõ, çàòåì ïîëîæåíèå êîíÿ.Íà âûõîäå 1, åñëè æàäíûé àëãîðèòì äàåòîáõîä äîñêè, 0 � â èíîì ñëó÷àå.

Ïðèìåð.Ââîä.8a1a2a3b1b3c1c2c3a1

Ðèñóíîê 1.

Page 9: ЖАДНЫЕ АЛГОРИТМЫ

57

Æàäíûå àëãîðèòìû

ÇÀÎ×ÍÀß ØÊÎËÀ ÑÎÂÐÅÌÅÍÍÎÃÎ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Âûâîä.1

Óðîâåíü 3. Ñôîðìóëèðóéòå ãèïîòåçóî ïðèìåíèìîñòè æàäíîãî àëãîðèòìà ê ðå-øåíèþ çàäà÷è îáõîäà ðàçëè÷íûõ äîñîê øàõ-ìàòíûì êîíåì ñ ðàçëè÷íûõ íà÷àëüíûõ ïî-çèöèé. Äàéòå òåîðåòè÷åñêîå èëè ýêñïåðè-ìåíòàëüíîå ïîäòâåðæäåíèå ãèïîòåçû (ïîñ-ëåäíåå ìîæíî ïîëó÷èòü, ðàáîòàÿ ñ îïèñàí-íîé âûøå ïðîãðàììîé).

Ïîäðîáíî àëãîðèòìû ïåðåáîðà ñ âîç-âðàòîì áóäóò ðàññìîòðåíû â îäíîì èç ñëå-äóþùèõ çàíÿòèé.

 çàêëþ÷åíèå åùå íåñêîëüêî çàäàíèé.

Çàäàíèå 8. Àëãîðèòì äåëåíèÿ «óãîë-êîì».

Óðîâåíü 1. Ñôîðìóëèðóéòå îáû÷íûéàëãîðèòì äåëåíèÿ â äåñÿòè÷íîé ñèñòåìåñ÷èñëåíèÿ (àëãîðèòì äåëåíèÿ «óãîëêîì») êàêæàäíûé àëãîðèòì.

Óðîâåíü 2. Íàïèøèòå ïðîãðàììó äå-ëåíèÿ ñ îñòàòêîì íàòóðàëüíûõ ÷èñåë â äâî-è÷íîé ñèñòåìå ñ÷èñëåíèÿ, èñïîëüçóÿ æàä-íûé àëãîðèòì. Íà âõîä ïîäàþòñÿ äåëèìîå èäåëèòåëü (íå áîëåå ÷åì èç 50 äâîè÷íûõöèôð). Íà âûõîäå ÷àñòíîå è îñòàòîê.

Ïðèìåð.

Ââîä.110110110110110110110110110110

Âûâîä.1000000001000110

Çàäàíèå 8. Ðàñêðàñêà êàðò.

Èçâåñòíàÿ çàäà-÷à î ðàñêðàñêå ïîëè-òè÷åñêîé êîíòóðíîéêàðòû ôîðìóëèðóåòñÿòàê. Ðàñêðàñèòü êàðòóíàèìåíüøèì ÷èñëîìêðàñîê òàê, ÷òîáû äâåñòðàíû, èìåþùèå ãðà-íèöó íåíóëåâîé äëè-íû, áûëè îêðàøåíûðàçíûìè êðàñêàìè.

Óðîâåíü 1. Ñôîð-ìóëèðóéòå æàäíûé àë-ãîðèòì äëÿ ðåøåíèÿçàäà÷è î ðàñêðàñêåêàðòû.

Óðîâåíü 2. Íàïè-øèòå ïðîãðàììó, ðåà-ëèçóþùóþ ýòîò àëãî-ðèòì äëÿ íå áîëåå ÷åì50 ñòðàí. Íàëè÷èå ãðàíèöû ìåæäó ñòðàíà-ìè i è j îïðåäåëÿåòñÿ çíà÷åíèåì ýëåìåíòàìàññèâà a[i; j]. Åñëè ýòî çíà÷åíèå ðàâíî 1 �ãðàíèöà åñòü, 0 � ãðàíèöû íåò.

Íà âõîä ïðîãðàììû ïîäàåòñÿ ñíà÷àëàêîëè÷åñòâî ñòðàí, çàòåì ïîñëåäîâàòåëüíîñòüèç íóëåé è åäèíèö, îïðåäåëÿþùàÿ íàëè÷èåãðàíèö ïåðâîé ñòðàíû ñ îñòàëüíûìè, çàòåìïîñëåäîâàòåëüíîñòü äëÿ äðóãîé ñòðàíû è ò. ä.Íà âûõîäå ðàñêðàñêà êàðòû � ïîñëåäîâà-òåëüíîñòü íàòóðàëüíûõ ÷èñåë (íîìåðîâ êðà-ñîê), ñîîòâåòñòâóþùàÿ íîìåðàì ñòðàí.

Ïðèìåð.Ââîä.3111110101Ýòî îçíà÷àåò (ñì. ðèñóíîê 2), ÷òî ïåð-

âàÿ ñòðàíà ãðàíè÷èò ñî âñåìè (è ñ ñîáîé âòîì ÷èñëå), âòîðàÿ íå ãðàíè÷èò ñ òðåòüåé, àòðåòüÿ íå ãðàíè÷èò ñî âòîðîé.

Âûâîä.122Ýòî îçíà÷àåò, ÷òî âòîðàÿ è òðåòüÿ

ñòðàíà îêðàøåíû â îäèí öâåò ¹ 2.Óêàçàíèå. Çàêðàøèâàåì îäíèì öâåòîì

êàê ìîæíî áîëüøå îáëàñòåé, çàòåì áåðåìäðóãîé öâåò.

Óðîâåíü 3.à) Ïðèâåäèòå ïðèìåðû êàðò, äëÿ êî-

òîðûõ æàäíûé àëãîðèòì íàõîäèò ðàñêðàñêóìèíèìàëüíûì ÷èñëîì êðàñîê, è ïðèìåð, êîã-äà îí íå ñðàáàòûâàåò.

á) Ïðåäëîæèòå âàðèàíòû óëó÷øåíèÿèñõîäíîãî àëãîðèòìà, èñïîëüçóÿ äîïîëíè-òåëüíûå ïðèçíàêè êàðòû.

Ðèñóíîê 2.

1

3

2

Page 10: ЖАДНЫЕ АЛГОРИТМЫ

58

Íîâèêîâ Ô.À., Ïîçäíÿêîâ Ñ.Í.

© ÊÎÌÏÜÞÒÅÐÍÛÅ ÈÍÑÒÐÓÌÅÍÒÛ Â ÎÁÐÀÇÎÂÀÍÈÈ. ¹ 2, 2005 ã.

Çàäà÷à 9. Óïàêîâêà ðþêçàêà ñûïó-÷èìè äðàãîöåííîñòÿìè.

Êëàäîèñêàòåëü îáíàðóæèë ñîêðîâèùà,íî íå ìîæåò çàõâàòèòü èõ âñå ñ ñîáîé. Òîã-äà îí ðàçëîæèë ñîêðîâèùà íà êó÷êè, êàæ-äàÿ èç êîòîðûõ õàðàêòåðèçóåòñÿ åå âåñîì èöåíîé (ñòîèìîñòü îäíîãî ãðàììà).

Óðîâåíü 1. Ñôîðìóëèðóéòå æàäíûéàëãîðèòì, ïî êîòîðîìó êëàäîèñêàòåëü äîë-æåí âçÿòü P ãðàìì ãðóçà, ÷òîáû åãî ñòî-èìîñòü áûëà íàèáîëüøåé.

Óðîâåíü 2. Ïðåäïîëîæèì, ÷òî êó÷êèäðàãîöåííîñòåé õàðàêòåðèçóþòñÿ åùå è

Íîâèêîâ Ôåäîð Àëåêñàíäðîâè÷,êàíäèäàò ôèçèêî-ìàòåìàòè÷åñêèõíàóê, äîöåíò Ñàíêò-Ïåòåðáóðãñêîãîïîëèòåõíè÷åñêîãî óíèâåðñèòåòà,

Ïîçäíÿêîâ Ñåðãåé Íèêîëàåâè÷,äîêòîð ïåäàãîãè÷åñêèõ íàóê,ïðîôåññîð êàôåäðû ÂÌ-2 ÑÏáÃÝÒÓ.

îáúåìîì (â êóáè÷åñêèõ ñì), à ðþêçàê èñêà-òåëÿ èìååò îáúåì V (êóá. ñì). Íàïèøèòå ïðî-ãðàììó äëÿ íàïîëíåíèÿ ðþêçàêà äðàãîöåí-íîñòÿìè ñ öåëüþ óïàêîâàòü ñîêðîâèùà íàìàêñèìàëüíî âîçìîæíóþ ñóììó.

Íà âõîä ïðîãðàììû ïîäàþòñÿ îãðà-íè÷åíèÿ ïî âåñó è îáúåìó: P, V, çàòåì êî-ëè÷åñòâî êó÷åê è ïîñëåäîâàòåëüíîñòü õà-ðàêòåðèñòèê êó÷åê: íîìåð êó÷êè, óäåëüíàÿöåííîñòü, âåñ, îáúåì. Íà âûõîäå ïðîãðàì-ìû äîëæíà áûòü ïîñëåäîâàòåëüíîñòü: íî-ìåð êó÷êè è âåñ âçÿòûõ èç íåå äðàãîöåííî-ñòåé.

Ïðèìåð.

Ââîä.10000025000031 20 100000 750002 40 70000 2000003 30 80000 100000

Âûâîä.2 700003 30000