• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            PKU 1149, PIGS,構(gòu)造網(wǎng)絡(luò)流模型時(shí),要注意合并節(jié)點(diǎn)和邊(轉(zhuǎn))

                這道題目的大意是這樣的:
            • 有 M 個(gè)豬圈(M ≤ 1000),每個(gè)豬圈里初始時(shí)有若干頭豬。
            • 一開始所有豬圈都是關(guān)閉的。
            • 依次來(lái)了 N 個(gè)顧客(N ≤ 100),每個(gè)顧客分別會(huì)打開指定的幾個(gè)豬圈,從中買若干頭豬。
            • 每個(gè)顧客分別都有他能夠買的數(shù)量的上限。
            • 每個(gè)顧客走后,他打開的那些豬圈中的豬,都可以被任意地調(diào)換到其它開著的豬圈里,然后所有豬圈重新關(guān)上。
                問總共最多能賣出多少頭豬。

                舉個(gè)例子來(lái)說。有 3 個(gè)豬圈,初始時(shí)分別有 3、 1 和 10 頭豬。依次來(lái)了 3 個(gè)顧客,第一個(gè)打開 1 號(hào) 和 2 號(hào)豬圈,最多買 2 頭;第二個(gè)打開 1 號(hào) 和 3 號(hào)豬圈,最多買 3 頭;第三個(gè)打開 2 號(hào)豬圈,最多買 6 頭。那么,最好的可能性之一就是第一個(gè)顧客從 1 號(hào)圈買 2 頭,然后把 1 號(hào)圈剩下的 1 頭放到 2 號(hào)圈;第二個(gè)顧客從 3 號(hào)圈買 3 頭;第三個(gè)顧客從 2 號(hào)圈買 2 頭。總共賣出 2 + 3 + 2 = 7 頭。□

                不難想像,這個(gè)問題的網(wǎng)絡(luò)模型可以很直觀地構(gòu)造出來(lái)。就拿上面的例子來(lái)說,可以構(gòu)造出圖 1 所示的模型(圖中凡是沒有標(biāo)數(shù)字的邊,容量都是 +∞):
            • 三個(gè)顧客,就有三輪交易,每一輪分別都有 3 個(gè)豬圈和 1 個(gè)顧客的節(jié)點(diǎn)。
            • 從源點(diǎn)到第一輪的各個(gè)豬圈各有一條邊,容量就是各個(gè)豬圈里的豬的初始數(shù)量。
            • 從各個(gè)顧客到匯點(diǎn)各有一條邊,容量就是各個(gè)顧客能買的數(shù)量上限。
            • 在某一輪中,從該顧客打開的所有豬圈都有一條邊連向該顧客,容量都是 +∞。
            • 最后一輪除外,從每一輪的 i 號(hào)豬圈都有一條邊連向下一輪的 i 號(hào)豬圈,容量都是 +∞,表示這一輪剩下的豬可以留到下一輪。
            • 最后一輪除外,從每一輪被打開的所有豬圈,到下一輪的同樣這些豬圈,兩兩之間都要連一條邊,表示它們之間可以任意流通。



            圖 1

                不難想像,這個(gè)網(wǎng)絡(luò)模型的最大流量就是最多能賣出的數(shù)量。圖中最多有 2 + N + M × N ≈ 100,000 個(gè)節(jié)點(diǎn)。□

                這個(gè)模型雖然很直觀,但是節(jié)點(diǎn)數(shù)太多了,計(jì)算速度肯定會(huì)很慢。其實(shí)不用再想別的算法,就讓我們繼續(xù)上面的例子,用合并的方法來(lái)簡(jiǎn)化這個(gè)網(wǎng)絡(luò)模型。

                首先,最后一輪中沒有打開的豬圈就可以從圖中刪掉了,也就是圖 2紅色的部分,顯然它們對(duì)整個(gè)網(wǎng)絡(luò)的流量沒有任何影響。



            圖 2

                接著,看圖 2藍(lán)色的部分。根據(jù)我總結(jié)出的以下幾個(gè)規(guī)律,可以把這 4 個(gè)點(diǎn)合并成一個(gè):

                規(guī)律 1. 如果幾個(gè)節(jié)點(diǎn)的流量的來(lái)源完全相同,則可以把它們合并成一個(gè)。

                規(guī)律 2. 如果幾個(gè)節(jié)點(diǎn)的流量的去向完全相同,則可以把它們合并成一個(gè)。

                規(guī)律 3. 如果從點(diǎn) u 到點(diǎn) v 有一條流容量為 +∞ 的邊,并且點(diǎn) v 除了點(diǎn) u 以外沒有別的流量來(lái)源,則可以把這兩個(gè)節(jié)點(diǎn)合并成一個(gè)。

                根據(jù)規(guī)律 1,可以把藍(lán)色部分右邊的 1、 2 號(hào)節(jié)點(diǎn)合并成一個(gè);根據(jù)規(guī)律 2,可以把藍(lán)色部分左邊的 1、 2 號(hào)節(jié)點(diǎn)合并成一個(gè);最后,根據(jù)規(guī)律 3,可以把藍(lán)色部分的左邊和右邊(已經(jīng)分別合并成了一個(gè)節(jié)點(diǎn))合并成一個(gè)節(jié)點(diǎn)。于是,圖 2 被簡(jiǎn)化成了圖 3 的樣子。也就是說,最后一輪除外,每一輪被打開的豬圈和下一輪的同樣這些豬圈都可以被合并成一個(gè)點(diǎn)。



            圖 3

                接著,根據(jù)規(guī)律 3圖 3 中的藍(lán)色節(jié)點(diǎn)、2 號(hào)豬圈和 1 號(hào)顧客這三點(diǎn)可以合并成一個(gè);圖 3 中的兩個(gè) 3 號(hào)豬圈和 2 號(hào)顧客也可以合并成一個(gè)點(diǎn)。當(dāng)然,如果兩點(diǎn)之間有多條同向的邊,則這些邊可以合并成一條,容量相加,這個(gè)道理很簡(jiǎn)單,就不用我多說了。最終,上例中的網(wǎng)絡(luò)模型被簡(jiǎn)化成了圖 4 的樣子。□


            圖 4

                讓我們從圖 4 中重新總結(jié)一下構(gòu)造這個(gè)網(wǎng)絡(luò)模型的規(guī)則:
            • 每個(gè)顧客分別用一個(gè)節(jié)點(diǎn)來(lái)表示。
            • 對(duì)于每個(gè)豬圈的第一個(gè)顧客,從源點(diǎn)向他連一條邊,容量就是該豬圈里的豬的初始數(shù)量。如果從源點(diǎn)到一名顧客有多條邊,則可以把它們合并成一條,容量相加。
            • 對(duì)于每個(gè)豬圈,假設(shè)有 n 個(gè)顧客打開過它,則對(duì)所有整數(shù) i ∈ [1, n),從該豬圈的第 i 個(gè)顧客向第 i + 1 個(gè)顧客連一條邊,容量為 +∞。
            • 從各個(gè)顧客到匯點(diǎn)各有一條邊,容量是各個(gè)顧客能買的數(shù)量上限。
                拿我們前面一直在講的例子來(lái)說:1 號(hào)豬圈的第一個(gè)顧客是 1 號(hào)顧客,所以從源點(diǎn)到 1 號(hào)顧客有一條容量為 3 的邊;1 號(hào)豬圈的第二個(gè)顧客是 2 號(hào)顧客,因此從 1 號(hào)顧客到 2 號(hào)顧客有一條容量為 +∞ 的邊;2 號(hào)豬圈的第一個(gè)顧客也是 1 號(hào)顧客,所以從源點(diǎn)到 1 號(hào)顧客有一條容量為 1 的邊,和之前已有的一條邊合并起來(lái),容量變成 4;2 號(hào)豬圈的第二個(gè)顧客是 3 號(hào)顧客,因此從 1 號(hào)顧客到 3 號(hào)顧客有一條容量為 +∞ 的邊;3 號(hào)豬圈的第一個(gè)顧客是 2 號(hào)顧客,所以從源點(diǎn)到 2 號(hào)顧客有一條容量為 10 的邊。□

                新的網(wǎng)絡(luò)模型中最多只有 2 + N = 102 個(gè)節(jié)點(diǎn),計(jì)算速度就可以相當(dāng)快了。可以這樣理解這個(gè)新的網(wǎng)絡(luò)模型:對(duì)于某一個(gè)顧客,如果他打開了豬圈 h,則在他走后,他打開的所有豬圈里剩下的豬都有可能被換到 h 中,因而這些豬都有可能被 h 的下一個(gè)顧客買走。所以對(duì)于一個(gè)顧客打開的所有豬圈,從該顧客到各豬圈的下一個(gè)顧客,都要連一條容量為 +∞ 的邊。

                在面對(duì)網(wǎng)絡(luò)流問題時(shí),如果一時(shí)想不出很好的構(gòu)圖方法,不如先構(gòu)造一個(gè)最直觀,或者說最“硬來(lái)”的模型,然后再用合并節(jié)點(diǎn)和邊的方法來(lái)簡(jiǎn)直化這個(gè)模型。經(jīng)過簡(jiǎn)化以后,好的構(gòu)圖思路自然就會(huì)涌現(xiàn)出來(lái)了。這是解決網(wǎng)絡(luò)流問題的一個(gè)好方法。


            轉(zhuǎn)自:http://imlazy.ycool.com/post.2059102.html

            posted on 2009-07-12 06:42 abilitytao 閱讀(213) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲国产成人久久综合一区77| 国产一区二区精品久久凹凸| 久久久久亚洲爆乳少妇无| 久久人人爽人人爽人人片AV东京热| 国内精品九九久久精品| 99久久精品九九亚洲精品| 久久亚洲精品无码VA大香大香| 色综合久久无码中文字幕| 热re99久久精品国产99热| 热久久国产精品| 亚洲va中文字幕无码久久不卡| 国产成人综合久久久久久| 久久天天躁夜夜躁狠狠躁2022 | 丁香五月综合久久激情| 国产精品美女久久久久AV福利| 亚洲欧美一级久久精品| 国产成人精品久久综合| 人妻无码中文久久久久专区| 国产精品无码久久久久 | 亚洲国产精品无码久久SM| 久久99国产精品久久| 久久91精品国产91久久麻豆| 久久精品毛片免费观看| 久久黄色视频| 精品综合久久久久久97| 亚洲成色www久久网站夜月| 一级a性色生活片久久无| 精品国产乱码久久久久久呢 | 久久99免费视频| 亚洲性久久久影院| 麻豆一区二区99久久久久| 新狼窝色AV性久久久久久| 国产精品成人久久久久三级午夜电影| 一本大道久久a久久精品综合| 国产精品青草久久久久福利99| 免费无码国产欧美久久18| 久久国产欧美日韩精品 | 777久久精品一区二区三区无码| 日本久久中文字幕| 久久综合亚洲色HEZYO国产 | 欧美精品九九99久久在观看|