国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【二分圖】 二分圖上匹配問題 和 匈牙利算法正確性說明

這篇具有很好參考價(jià)值的文章主要介紹了【二分圖】 二分圖上匹配問題 和 匈牙利算法正確性說明。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【二分圖】 二分圖上匹配問題 和 匈牙利算法正確性說明

  • 本文討論無權(quán)圖

  • 思維上沒什么難度,但是文字量卻比自己想的要多……

0. 一些前置

  • 什么是二分圖上的匹配?什么是匈牙利算法?

??“二分圖最大匹配概念、匈牙利算法” 這里引用 Pecco 的介紹。這篇文章寫的非常通俗易懂,而且揭示了匈牙利算法(或者說增廣路)的本質(zhì)是“樸素的匹配調(diào)整”。

  • 增廣路、交錯(cuò)路是什么?

??“增廣路、交錯(cuò)路概念” 這里引用 OI-wiki 的內(nèi)容介紹。

1.匈牙利算法跑完之后,二分圖中不存在增廣路

??我們先強(qiáng)調(diào)一下,在二分圖上增廣路的一些性質(zhì)。因?yàn)樵鰪V路一定有偶數(shù)個(gè)點(diǎn)、奇數(shù)條邊,因此二分圖上增廣路的兩個(gè)端點(diǎn)一定分別在兩側(cè)。那么顯然,如果從一側(cè)出發(fā)找不到增廣路,那么從另一側(cè)出發(fā)肯定也找不到。以及增廣路中除了兩端點(diǎn)外所有的點(diǎn)都是匹配點(diǎn),以及增廣路中最左右兩條邊是未匹配的,剩下的邊交替著匹配和未匹配。

??因此,只要證明了從一側(cè)的任一點(diǎn)出發(fā)都找不到增廣路,那么整張二分圖就沒有增廣路。我們不妨假設(shè)從左側(cè)出發(fā)。

??我們歸納地證明一下(通過討論匈牙利算法進(jìn)行到左側(cè)的第幾個(gè)點(diǎn))。我們要證明的是,匈牙利算法進(jìn)行完某一個(gè)點(diǎn)之后,從這個(gè)點(diǎn)出發(fā)以及從之前的(左側(cè)的)點(diǎn)出發(fā)都找不到增廣路,即圖中沒有增廣路。下文的提及的“前xx個(gè)點(diǎn)“都是數(shù)左側(cè)的點(diǎn)。

??首先,當(dāng)一開始算法進(jìn)行完 \(0\) 個(gè)點(diǎn)的時(shí)候,前 \(0\) 個(gè)點(diǎn)中沒有增廣路。如果你不放心,那么我們考慮算法進(jìn)行第一個(gè)點(diǎn),要么有增廣路被增廣了 第一個(gè)點(diǎn)變成了匹配點(diǎn) ,從前 \(1\) 個(gè)點(diǎn)出發(fā)沒有增廣路;要么就找不到增廣路,同樣從前 \(1\) 個(gè)點(diǎn)出發(fā)沒有增廣路。

??現(xiàn)在我們假設(shè)前 \(k\) 個(gè)點(diǎn)出發(fā)沒有增廣路,我們想證明,在進(jìn)行完第 \(k + 1\) 個(gè)點(diǎn)的搜索、(可能存在的)增廣之后,圖中不存在增廣路。

??如果從這個(gè)點(diǎn)出發(fā)找不到增廣路,那么也肯定不會有任何操作,也就不會影響前面的點(diǎn)的結(jié)果,因此前 \(k + 1\) 個(gè)點(diǎn)中沒有增廣路。

??如果從新加入的這個(gè)點(diǎn)出發(fā)找到了增廣路,那么這條路就要被增廣,增廣之后就不是增廣路了。我們現(xiàn)在唯一要考慮的就是,這條路增廣的過程中,會不會影響先前的點(diǎn),使得先前的點(diǎn)中間出現(xiàn)增廣路?

??增廣完成后,增廣的路徑上都變成了匹配點(diǎn)。

??我們考慮增廣完成后的情況。假設(shè),增廣完成后,在之前的點(diǎn)中間(只能在之前的點(diǎn)中間出現(xiàn)在增廣路,因?yàn)樾曼c(diǎn)已經(jīng)被匹配了),出現(xiàn)了增廣路。

(本圖中內(nèi)容涵蓋上文和下文,請結(jié)合對應(yīng)部分內(nèi)容閱讀)

【二分圖】 二分圖上匹配問題 和 匈牙利算法正確性說明

??加入新的增廣路 和 這次被增廣的增廣路沒有交點(diǎn),那就矛盾了,因?yàn)檫@次增廣過程根本不會影響到這條路徑,那么這條所謂的“新的”增廣路在之前就是增廣路,不符合我們的假設(shè)。

??兩條路徑相交的時(shí)候,一條是我們發(fā)現(xiàn)的新的增廣路,一條是本輪中經(jīng)過增廣后,整個(gè)路徑上全部被匹配的路徑。那么顯然相交點(diǎn)不可能存在于增廣路的兩端,因?yàn)榱硪粭l路上的點(diǎn)全匹配了,增廣路上沒匹配。

??(接下來的說明中,涉及到奇偶性的證明和匹配、未匹配沖突的說明,見上圖)

??我們考慮相交在增廣路中間的時(shí)候,如果只是點(diǎn)相交但沒有邊的重合,那么顯然是矛盾的,因?yàn)檫@樣會產(chǎn)生匹配沖突。

??如果有邊的重合,那么我們還原到本輪增廣之前的情況,肯定可以選取“新增廣路”的端點(diǎn)和之前的端點(diǎn)形成增廣路,與之前不存在增廣路矛盾(畫一下就可以知道)。

??因此可以證明,本輪增廣不會使得之前的點(diǎn)中形成新的增廣路,整個(gè)圖中沒有增廣路。這種情況也成立。

??因此歸納成立。匈牙利算法進(jìn)行完成后,二分圖中不存在增廣路。

2. 二分圖中不存在增廣路 等價(jià)于 達(dá)到最大匹配

??我們把原命題逆否一下(逆否之后肯等等價(jià)),二分圖沒達(dá)到最大匹配 等價(jià)于 二分圖中存在增廣路

??后推前是明顯成立的。因?yàn)槎謭D中如果有增廣路,那肯定可以增廣一下,匹配數(shù)量+1。

??前推后在這里引用一個(gè)證明:“匈牙利算法匹配即最大匹配的證明” 這里面的證明基于“匈牙利算法跑完后、二分圖中不存在增廣路”,也就是之前的證明。

3.最大匹配數(shù) 等于 最小點(diǎn)覆蓋數(shù)

??“二分圖最大匹配的K?nig定理及其證明” 在這里我引用了 Matrix67 的證明。下文關(guān)于K?nig定理的證明是參考的這篇文章。

??簡而言之,最小點(diǎn)覆蓋數(shù)的“瓶頸”是有多少條不相交的邊(因?yàn)槎嫉蒙w上)。所以最小覆蓋數(shù) \(\ge\) 最大匹配數(shù)(就是最多的不相交的邊)。而當(dāng)達(dá)成最大匹配之后,二分圖中的匹配邊可以分“方向”(和未匹配點(diǎn)的連接方式有關(guān)),按照方向在匹配邊兩個(gè)端點(diǎn)中的一個(gè)選擇覆蓋。最終證明可以覆蓋所有邊。那么最小點(diǎn)覆蓋數(shù) \(=\) 最大匹配數(shù)。

4.題外話:非二分圖上的無權(quán)圖的匹配

??思路:在圖上進(jìn)行 BFS 或者 DFS 進(jìn)行染色,轉(zhuǎn)化為二分圖。那么有:如果存在奇環(huán),那么不能直接轉(zhuǎn)化成二分圖,否則是可以的。涉及到奇環(huán)的問題需要縮點(diǎn)等技巧,就另見“帶花樹算法”了。

??首先,二分圖只可能有偶環(huán),沒有奇環(huán)。我們假設(shè)二分圖形成了環(huán)狀結(jié)構(gòu),那么存在一條路徑以某一點(diǎn)為起點(diǎn)和終點(diǎn)。根據(jù)二分圖性質(zhì),因?yàn)槠瘘c(diǎn)和終點(diǎn)同一個(gè)點(diǎn),所以一定處于同一側(cè),那么路徑長度就一定為偶數(shù),因此只能有偶環(huán),不能有奇環(huán)。

??其次,我們考慮對一個(gè)無向圖進(jìn)行 dfs 染色,黑白相間。我們考慮搜索樹上的情況,因?yàn)闊o向圖 dfs 樹只有 T 邊和 B 邊,T邊上顯然不沖突??紤] B 邊構(gòu)成環(huán)的情況??梢钥闯?,如果顏色染色不沖突,那么根據(jù)奇偶性質(zhì),一定是偶環(huán),偶環(huán)不沖突。奇環(huán)一定沖突,所以不可能是奇環(huán)。

??于是,有點(diǎn)充要的,二分圖和不含奇環(huán)的無向圖可以相互轉(zhuǎn)化。至于唯一性,那需要考慮連通性的問題了。文章來源地址http://www.zghlxwxcb.cn/news/detail-647126.html

到了這里,關(guān)于【二分圖】 二分圖上匹配問題 和 匈牙利算法正確性說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法基礎(chǔ):搜索與圖論】3.6 二分圖(染色法判定二分圖&匈牙利算法)

    【算法基礎(chǔ):搜索與圖論】3.6 二分圖(染色法判定二分圖&匈牙利算法)

    https://oi-wiki.org/graph/bi-graph/ 二分圖是圖論中的一個(gè)概念, 它的所有節(jié)點(diǎn)可以被分為兩個(gè)獨(dú)立的集合,每個(gè)邊的兩個(gè)端點(diǎn)分別來自這兩個(gè)不同的集合 。 換句話說, 二分圖中不存在連接同一集合內(nèi)兩個(gè)節(jié)點(diǎn)的邊 。 如何判斷一個(gè)圖是二分圖? 當(dāng)且僅當(dāng)圖中不含奇數(shù)環(huán) 。(奇數(shù)

    2024年02月16日
    瀏覽(25)
  • 第三章 圖論 No.11二分圖,匈牙利算法與點(diǎn)覆蓋

    第三章 圖論 No.11二分圖,匈牙利算法與點(diǎn)覆蓋

    257. 關(guān)押罪犯 - AcWing題庫 最大最小問題,一眼二分 答案的范圍在 [ 1 , 1 e 9 ] [1, 1e9] [ 1 , 1 e 9 ] 之間,二分答案,check(mid) check:將所有權(quán)值大于mid的邊進(jìn)行二分,若能得到二分圖,返回true,否則返回false 最終將得到最優(yōu)解ans,所有大于ans的邊組成的圖為二分圖,若是圖中有邊

    2024年02月12日
    瀏覽(19)
  • 算法基礎(chǔ)復(fù)盤筆記Day07【搜索與圖論】—— Prim、Kruskal、染色體判定二分圖、匈牙利算法

    算法基礎(chǔ)復(fù)盤筆記Day07【搜索與圖論】—— Prim、Kruskal、染色體判定二分圖、匈牙利算法

    ? 作者主頁:歡迎來到我的技術(shù)博客?? ? 個(gè)人介紹:大家好,本人熱衷于 Java后端開發(fā) ,歡迎來交流學(xué)習(xí)哦!( ̄▽ ̄)~* ?? 如果文章對您有幫助,記得 關(guān)注 、 點(diǎn)贊 、 收藏 、 評論 ?????? ?? 您的支持將是我創(chuàng)作的動(dòng)力,讓我們一起加油進(jìn)步吧?。。???? 1. 題目

    2024年02月02日
    瀏覽(22)
  • 指派問題與匈牙利算法

    指派問題與匈牙利算法

    有n項(xiàng)不同的工作或任務(wù),需要n個(gè)人去完成,要求每人只完成一項(xiàng)工作。由于每人的知識、能力、經(jīng)驗(yàn)等不同,故各人完成不同任務(wù)所需的時(shí)間不同。問應(yīng)指派何人完成何項(xiàng)工作,使完成n項(xiàng)工作總耗時(shí)最少。這就是指派問題,指派問題也是整數(shù)規(guī)劃問題。 目標(biāo)函數(shù)是最小化問

    2024年02月05日
    瀏覽(23)
  • DETR代碼學(xué)習(xí)(五)之匈牙利匹配

    DETR代碼學(xué)習(xí)(五)之匈牙利匹配

    匈牙利匹配先前在損失函數(shù)那塊已經(jīng)介紹過,但講述了并不清晰,而且準(zhǔn)確來說,匈牙利匹配所用的cost值與損失函數(shù)并沒有關(guān)系,因此今天我們來看一下匈牙利匹配這塊的代碼與其原理。 前面已經(jīng)說過,DETR將目標(biāo)檢測看作集合預(yù)測問題,在最后的預(yù)測值與真實(shí)值匹配過程,

    2024年02月09日
    瀏覽(19)
  • 數(shù)學(xué)建模筆記——整數(shù)規(guī)劃類問題之我見(匈牙利算法)

    數(shù)學(xué)建模筆記——整數(shù)規(guī)劃類問題之我見(匈牙利算法)

    目錄 淺淺敘述匈牙利算法 基本思路 計(jì)算步驟 來一道簡單例題 1.1 符號規(guī)定 1.2目標(biāo)函數(shù)?編輯 ? ? ? 1.3約束條件 ?編輯 1.4代碼 題目復(fù)述 基本假設(shè) 問題分析 符號說明 ?模型的建立與求解 模型建立思路 模型建立的過程 建立0-1整數(shù)規(guī)劃模型 ?運(yùn)用匈牙利方法: 代碼實(shí)現(xiàn) ?

    2023年04月11日
    瀏覽(66)
  • 目標(biāo)跟蹤:Deepsort--卡爾曼濾波、匈牙利匹配、馬氏距離、歐氏距離、級聯(lián)匹配、reid

    目標(biāo)跟蹤:Deepsort--卡爾曼濾波、匈牙利匹配、馬氏距離、歐氏距離、級聯(lián)匹配、reid

    本篇文章供自己學(xué)習(xí)回顧,其中錯(cuò)誤希望指出! 先把目標(biāo)跟蹤中涉及到的名詞拋出來: 1、卡爾曼濾波、 2、匈牙利匹配:https://blog.csdn.net/DeepCBW/article/details/124740092 3、馬氏距離、 4、歐氏距離、 5、級聯(lián)匹配、 6、代價(jià)矩陣 sort過程比較簡單,先搬個(gè)圖: 基于上圖展開對sort的

    2024年02月05日
    瀏覽(25)
  • 搜索與圖論:匈牙利算法

    將所有點(diǎn)分成兩個(gè)集合,使得所有邊只出現(xiàn)在集合之間,就是二分圖 二分圖:一定不含有奇數(shù)個(gè)點(diǎn)數(shù)的環(huán);可能包含長度為偶數(shù)的環(huán), 不一定是連通圖

    2024年02月08日
    瀏覽(21)
  • 數(shù)學(xué)建模(四)整數(shù)規(guī)劃—匈牙利算法

    數(shù)學(xué)建模(四)整數(shù)規(guī)劃—匈牙利算法

    目錄 一、0-1型整數(shù)規(guī)劃問題 1.1 案例 1.2 指派問題的標(biāo)準(zhǔn)形式 2.2 非標(biāo)準(zhǔn)形式的指派問題 二、指派問題的匈牙利解法? 2.1 匈牙利解法的一般步驟 2.2 匈牙利解法的實(shí)例 2.3 代碼實(shí)現(xiàn) 投資問題: 有600萬元投資5個(gè)項(xiàng)目,收益如表,求利潤最大的方案? 設(shè)置決策變量: 模型: 指派

    2024年02月11日
    瀏覽(21)
  • DETR | 基于匈牙利算法的樣本分配策略

    DETR | 基于匈牙利算法的樣本分配策略

    如有錯(cuò)誤,懇請指出。 前不久,沐神對DETR進(jìn)行了講解,其實(shí)之前也對DETR進(jìn)行了介紹,見:論文閱讀筆記 | 目標(biāo)檢測算法——DETR?,F(xiàn)對DETR的核心內(nèi)容進(jìn)行重溫,也就是其所提出的目標(biāo)檢測的end-to-end框架,輸入的是一張圖像,輸出的直接是最后的預(yù)測標(biāo)注結(jié)果,不再需要后處

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包