匈牙利演算法(簡單易懂)

2021-09-25 06:33:10 字數 1109 閱讀 6351

匈牙利演算法為一種二分圖最大匹配的指派演算法,在多目標跟蹤中比較常用,以下是工程化的匈牙利演算法步驟:

step1.將元素排列成為矩陣,列為被指派物件,行為匹配權重

step2.將矩陣補齊為m*m的方陣,補的元素為原始矩陣中的最大值

step3.找出每行的最下元素a1,a2...an,然後每行的所有元素分別減去本行的最小值

step4.找出所有不含0元素的列,然後這些列的每個元素分別減去本列的最下值,產生0

step5.用最少的直線覆蓋矩陣中的全部0元素,如果行方向的直線數量等於列方向的直線數量,跳到step8

step6.從沒有被覆蓋的元素中找出最小值n,矩陣中所有被覆蓋的元素都加上n,如果乙個元素被直線覆蓋兩次,則加2n,沒有被覆蓋的元素不做處理

step7.從矩陣全部元素中找出最小值n,矩陣中所有元素均減去n

重複step5,如果滿足條件,跳到step8,否則繼續執行step6、step7

step8.選出m個0,使得每個0都不同行不同列

step9.將選出0的位置對映回原始矩陣,即可得到指派方案。

kmp演算法 簡單易懂

kmp字串 給定乙個模式串s,以及乙個模板串p,所有字串中只包含大小寫英文本母以及阿拉伯數字。模板串p在模式串s中多次作為子串出現。求出模板串p在模式串s中所有出現的位置的起始下標。輸入格式 第一行輸入整數n,表示字串p的長度。第二行輸入字串p。第三行輸入整數m,表示字串s的長度。第四行輸入字串s。...

簡單粗暴理解匈牙利演算法

書本上的演算法往往講得非常複雜,我和我的朋友計畫用一些簡單通俗的例子來描述演算法的流程 匈牙利演算法是由匈牙利數學家edmonds於1965年提出,因而得名。匈牙利演算法是基於hall定理中充分性證明的思想,它是部圖匹配最常見的演算法,該演算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹...

簡單易懂的BitMap演算法

面試題經常會有類似給很大的一堆連續的,不重複的無符號整數 如10億個整數 而且是無序的,然後希望以後能頻繁快速的查詢某個數字是否出現在這些數字中。a 一開始如果我們先假設不考慮記憶體需求,由於要頻繁快速的查詢數字是否存在,所以對這些數字進行排序進行二分明顯是不符合要求,查詢最快就是類似hash,這道...