¡¶µÚ7Õ ͼ½á¹¹¡·Ï°Ìâ½â´ð ÏÂÔØ±¾ÎÄ

µÚ7Õ ͼ½á¹¹

}

for(i=0;i

for(i=0;iadjvex]++; p=p->nextarc; } }

S.s=new int[num]; S.t=0;

for(i=0;i

(2) ÍØÆËÅÅÐòµÄË㷨ʵÏÖ

º¯Êývoid TopSort(ALGraph G)µÄ¹¦ÄÜÊÇ£¬¸ù¾ÝÓÐÏòͼGµÄÁÚ½Ó±íÊä³öÒ»¸öÍØÆËÅÅÐòÐòÁС£ void TopSort(ALGraph G) { int *indegree,i,count=0; ArcNode* p; Stack S; Init_IndegreeStack(indegree,S,G); while(S.t) { count++; i=S.s[--S.t]; cout<adjvex]--; if(!indegree[p->adjvex]) S.s[S.t++]=p->adjvex; p=p->nextarc; } } cout<

void main()

{ ALGraph G; GKind gk=DG; cout<<\½¨Á¢Ò»¸öÓÐÏòͼµÄÁÚ½Ó±íG:\\n\ CreateGraph_AL(G,gk); cout<<\ÓÐÏòͼGµÄÁÚ½Ó±íΪ:\\n\ DisplyAL(G);

-.215.-

µÚ7Õ ͼ½á¹¹

cout<<\ÓÐÏòͼGµÄÒ»¸öÍØÆËÅÅÐòÐòÁÐΪ:\\n\ TopSort(G); }

³ÌÐòµÄÔËÐÐÑÝʾ½á¹ûΪ£º

½¨Á¢Ò»¸öÓÐÏòͼµÄÁÚ½Ó±íG:

ÊäÈë¶¥µãÊýºÍ±ß(»¡)Êývexnum arcnum:12 16¨L °´Ä³ÖÖ˳ÐòÊäÈë12¸ö¶¥µãµÄÖµ: 1 2 3 4 5 6 7 8 9 10 11 12¨L

ÊäÈëͼÖÐ16Ìõ±ß(»¡)µÄÐÅÏ¢u v:

1 2 1 3 1 4 1 12 2 3 3 5 3 7 3 8 4 5 5 7 6 8 9 10 9 11 9 12 10 12 11 6¨L ÓÐÏòͼGµÄÁÚ½Ó±íΪ: 0 (1): [11] [3] [2] [1] 1 (2): [2]

2 (3): [7] [6] [4]

3 (4): [4] 4 (5): [6] 5 (6): [7] 6 (7): 7 (8):

8 (9): [11] [10] [9] 9 (10): [11] 10 (11): [5] 11 (12):

ÓÐÏòͼGµÄÒ»¸öÍØÆËÅÅÐòÐòÁÐΪ: 9 10 11 6 1 2 3 8 4 5 7 12

³ÌÐòÔËÐÐÖÐËù½¨Á¢µÄÊÇͼ7.30(b)ËùʾµÄÓÐÏòͼGµÄÁÚ½Ó±í£¬ÆäÊä³ö½á¹ûÊÇGÖÐËùÓж¥µãµÄÒ»¸öÍØÆËÅÅÐòÐòÁС£¸ÃËã·¨µÄʱ¼ä¸´ÔÓ¶ÈΪO(n+e)¡£

7.7¹Ø¼ü·¾¶ºÍ¹Ø¼ü»î¶¯

ÈçǰËùÊö£¬¿ÉÒÔÀûÓöÔͼµÄÍØÆËÅÅÐò²Ù×÷À´ÅжϹ¤³ÌÄÜ·ñ˳Àû½øÐС£ÏÖÔÚ´ÓÁíÒ»·½ÃæÀ´¿¼ÂÇ£¬É蹤³ÌµÄÿһ¸ö»î¶¯¶¼ÓÐÆðʼµã¡¢½áÊøµã¡¢Íê³Éʱ¼ä£¨¼´ÆÚÏÞ£©¡£ÓÉÓÚÔÚÕû¸ö¹¤³ÌÄÚ²¿£¬Ö»Óе±Ò»Ð©»î¶¯Íê³ÉÁË£¬ÁíһЩ»î¶¯²ÅÄÜ¿ªÊ¼¡£Õâʱ£¬³ýÁË¿¼ÂǸ÷»î¶¯¿ªÊ¼µÄ˳ÐòÒÔÍ⣬»¹Òª¿¼ÂÇÕû¸ö¹¤³ÌÖÁÉÙÐèÒª¶àÉÙʱ¼ä£¿ÄÄЩ»î¶¯ÊÇÓ°Ï칤³Ì½ø¶ÈµÄ¹Ø¼ü£¿Õâ¾ÍÊǹؼü·¾¶ÎÊÌâ¡£Çó½âͼµÄ¹Ø¼ü·¾¶ÊÇÓÐÏòÎÞ»·Í¼µÄÁíÒ»ÖÖÓ¦Óá£

7.7.1 AOEÍø¼°ÆäÏà¹Ø¸ÅÄî

ÔÚ´øÈ¨ÓÐÏòͼÖУ¬Óö¥µã±íʾʼþ(event)£¬Óû¡±íʾ»î¶¯(activity)£¬È¨±íʾ»î¶¯µÄ³ÖÐøÊ±¼ä£¬ÕâÑù×é³ÉµÄÍø³ÆÎªÒԱ߱íʾ»î¶¯µÄÍø(Activity On Edge)£¬¼ò³ÆÎªAOEÍø¡£

ÔÚAOEÍøÖУ¬Í¨³£Ö»ÓÐÒ»¸öÈë¶ÈΪ0µÄ¶¥µãºÍÒ»¸ö³ö¶ÈΪ0µÄ¶¥µã£¬ÕâÊÇÒòΪһ¸ö¹¤³ÌÖ»ÓÐÒ»¸ö¿ªÊ¼µãºÍÒ»¸öÍê³Éµã¡£Èë¶ÈΪ0µÄ¶¥µã³ÆÎªÆðʼµã»òÔ´µã£¬³ö¶ÈΪ0µÄ¶¥µã³ÆÎª½áÊøµã»ò»ãµã¡£ÓÉÓÚÒ»¸ö¹¤³ÌÖеÄijЩ»î¶¯ÊÇ¿ÉÒÔ²¢Ðеģ¬ËùÒÔ´ÓÔ´µãµ½»ãµã¿ÉÄÜ´æÔÚ¶àÌõ·¾¶£»´ÓÔ´µãµ½»ãµãµÄ×·¾¶µÄ³¤¶È£¨¼´¸Ã·¾¶ÉÏËùÓл³ÖÐøÊ±¼äÖ®ºÍ£©£¬¾ÍÊÇÍê³ÉÕû¸ö¹¤³ÌËùÐèµÄ×îÉÙʱ¼ä¡£³Æ´ÓÔ´µãµ½»ãµã¾ßÓÐ×î´ó³¤¶ÈµÄ·¾¶Îª¹Ø¼ü·¾¶(critical path)£¬¹Ø¼ü·¾¶ÉϵÄËùÓл³ÆÎª¹Ø¼ü»î¶¯¡£

ÀýÈ磬һ¸ö¹¤³ÌµÄAOEÍøÈçͼ7.34Ëùʾ¡£ÔÚ¸ÃÍøÖУ¬v0ÊÇÔ´µã£¬v8ÊÇ»ãµã¡£¼ÙÉèͼÖÐȨֵµÄµ¥Î»ÎªÌì¡£»î¶¯a0ÐèÒª5ÌìÍê³É£¬a1ÐèÒª7ÌìÍê³É£¬a2ÐèÒª3ÌìÍê³É£¬µÈµÈ¡£µ±¹¤³Ì¿ªÊ¼ºó£¬»î¶¯a0¡¢a1¿ÉÒÔͬʱ½øÐУ¬¶øÖ»Óлa0Íê³Éºó»î¶¯a2²ÅÄÜ¿ªÊ¼£¬Ö»Óлa1Íê³Éºó»î¶¯a3¡¢a4²ÅÄÜÆô¶¯£¬µÈµÈ¡£¶¥µãÐòÁÐ(v0,v2,v3,v4,v6,v8)×é³ÉµÄ·¾¶ÊÇͼÖÐËùÓз¾¶ÖÐ×µÄ£¬Òò´ËËüÊÇÒ»Ìõ¹Ø¼ü·¾¶£¬¸Ã·¾¶ÉϵĹؼü»î¶¯ÓУºa1¡¢a3¡¢a5¡¢a8¡¢a10£¬Æä·¾¶³¤¶ÈΪ24£¬¼´¸ÃÏ³Ì×îÉÙÐèÒª24Ìì²ÅÄÜÍê³É¡£¶ø(v0,v2,v3,v4,v7,v8)Ò²ÊÇÒ»Ìõ¹Ø¼ü·¾¶£¬¸Ã·¾¶ÉϵĹؼü»î¶¯ÓУºa1¡¢a3¡¢a5¡¢a9¡¢a12¡£Ò»¸öAOEÍøÖУ¬¹Ø¼ü·¾¶¿ÉÄÜÓжàÌõ£¬µ«ËùÓйؼü·¾¶µÄ³¤¶ÈÏàͬ¡£

-.216.-