圖的匹配演算法
Ⅰ opencv關於像素點的圖像匹配演算法
首先,建議你將圖像中感興趣區域(比如上圖中的字母)取出來進行歸一化,然後在進行匹配率計算。這是因為周圍環境會對匹配率產生影響。
其次,建議你將匹配率演算法改成Hausdorff距離https://en.wikipedia.org/wiki/Hausdorff,這樣對圖像有些平移什麼的都不怎麼敏感了。
Ⅱ 圖像匹配的演算法
迄今為止,人們已經提出了各種各樣的圖像匹配演算法,但從總體上講,這些匹配演算法可以分成關系結構匹配方法、結合特定理論工具的匹配方法、基於灰度信息的匹配方法、基於亞像元匹配方法、基於內容特徵的匹配方法五大類型 基於內容特徵的匹配首先提取反映圖像重要信息的特徵,而後以這些特徵為模型進行匹配。局部特徵有點、邊緣、線條和小的區域,全局特徵包括多邊形和稱為結構的復雜的圖像內容描述。特徵提取的結果是一個含有特徵的表和對圖像的描述,每一個特徵由一組屬性表示,對屬性的進一步描述包括邊緣的定向和弧度,邊與線的長度和曲率,區域的大小等。除了局部特徵的屬性外,還用這些局部特徵之間的關系描述全局特徵,這些關系可以是幾何關系,例如兩個相鄰的三角形之間的邊,或兩個邊之間的距離可以是輻射度量關系,例如灰度值差別,或兩個相鄰區域之間的灰度值方差或拓撲關系,例如一個特徵受限於另一個特徵。人們一般提到的基於特徵的匹配絕大多數都是指基於點、線和邊緣的局部特徵匹配,而具有全局特徵的匹配實質上是我們上面提到的關系結構匹配方法。特徵是圖像內容最抽象的描述,與基於灰度的匹配方法比,特相對於幾何圖像和輻射影響來說更不易變化,但特徵提取方法的計算代價通常較,並且需要一些自由參數和事先按照經驗選取的閉值,因而不便於實時應用同時,在紋理較少的圖像區域提取的特徵的密度通常比較稀少,使局部特徵的提 取比較困難。另外,基於特徵的匹配方法的相似性度量也比較復雜,往往要以特徵屬性、啟發式方法及閉方法的結合來確定度量方法。基於圖像特徵的匹配方法可以克服利用圖像灰度信息進行匹配的缺點,由於圖像的特徵點比象素點要少很多,因而可以大大減少匹配過程的計算量同時,特徵點的匹配度量值對位置的變化比較敏感,可以大大提高匹配的精確程度而且,特徵點的提取過程可以減少雜訊的影響,對灰度變化,圖像形變以及遮擋等都有較好的適應能力。所以基於圖像特徵的匹配在實際中的應用越來越廣-泛。所使用的特徵基元有點特徵明顯點、角點、邊緣點等、邊緣線段等。
Ⅲ 圖像匹配的匹配關鍵要素
同一場景在不同條件下投影所得到的二維圖像會有很大的差異,這主要是由如下原因引起的:感測器雜訊、成像過程中視角改變引起的圖像變化、目標移動和變形、光照或者環境的改變帶來的圖像變化以及多種感測器的使用等。為解決上述圖像畸變帶來的匹配困難,人們提出了許多匹配演算法,而它們都是由如下四個要素組合而成:
(1)特徵空間
特徵空間是由參與匹配的圖像特徵構成的,選擇好的特徵可以提高匹配性能、降低搜索空間、減小雜訊等不確定性因素對匹配演算法的影響。匹配過程可以使用全局特徵或者局部特徵以及兩者的結合。
(2)相似性度量
相似性度量指用什麼度量來確定待匹配特徵之間的相似性,它通常定義為某種代價函數或者是距離函數的形式。經典的相似性度量包括相關函數和 Minkowski 距離,近年來人們提出了 Hausdorff 距離、互信息作為匹配度量。Hausdorff 距離對於雜訊非常敏感,分數 Hausdorff 距離能處理當目標存在遮擋和出格點的情況,但計算費時;基於互信息的方法因其對於照明的改變不敏感已在醫學等圖像的匹配中得到了廣泛應用,它也存在計算量大的問題,而且要求圖像之間有較大的重疊區域。
(3)圖像匹配變換類型
圖像幾何變換用來解決兩幅圖像之間的幾何位置差別,它包括剛體變換、仿射變換、投影變換、多項式變換等。
(4)變換參數的搜索
搜索策略是用合適的搜索方法在搜索空間中找出平移、旋轉等變換參數的最優估計,使得圖像之間經過變換後的相似性最大。搜索策略有窮盡搜索、分層搜索、模擬退火演算法、Powell方向加速法、動態規劃法、遺傳演算法和神經網路等。遺傳演算法採用非遍歷尋優搜索策略,可以保證尋優搜索的結果具有全局最優性,所需的計算量較之遍歷式搜索小得很多;神經網路具有分布式存儲和並行處理方式、自組織和自學習的功能以及很強的容錯性和魯棒性,因此這兩種方法在圖像匹配中得到了更為廣泛的使用。
在成像過程中,由於雜訊及遮擋等原因,導致一幅圖像中的特徵基元在另一幅圖像中有幾個候選特徵基元或者無對應基元,這些都是初級視覺中的「不適定問題」,通常在正則化框架下用各種約束條件來解決。常用的約束有唯一性約束、連續性約束、相容性約束和順序一致性約束。首先提取左右圖像對中的線段,用對應線段滿足的全局約束、相容性約束、鄰域約束等表示 HopfieIk 神經網路的能量函數,通過最小化能量函數得到兩幅圖像中的對應線段,提高了匹配的可靠性。同時人們還採用最小平方中值法和投票演算法等後處理來有效地消除假配點和誤配點。
Ⅳ 雙目視覺的匹配演算法是不是有好幾種具體是哪幾種
與普通的圖像模板匹配不同的是,立體匹配是通過在兩幅或多幅存在視點差異、幾何畸變、灰度畸變、雜訊干擾的圖像對之間進行的,不存在任何標准模板進行匹配。立體匹配方法一般包含以下三個問題:(1)基元的選擇,即選擇適當的圖像特徵如點、直線、相位等作為匹配基元;(2)匹配的准則,將關於物理世界的某些固有特徵表示為匹配所必須遵循的若干規則,使匹配結果能真實反映景物的本來面目;(3)演算法結構,通過利用適當的數學方法設計能正確匹配所選擇基元的穩定演算法。
根據匹配基元的不同,立體視覺匹配演算法目前主要分為三大類,即區域匹配、相位匹配和特徵匹配:
基於區域灰度的匹配演算法是把一幅圖像(基準圖)中某一點的灰度鄰域作為模板,在另一幅圖像(待匹配圖)中搜索具有相同(或相似)灰度值分布的對應點鄰域,從而實現兩幅圖像的匹配。這類演算法的性能取決於度量演算法及搜索策略的選擇。另外,也必須考慮匹配窗口大小、形式的選擇,大窗口對於景物中存在的遮擋或圖像不光滑的情況會更多的出現誤匹配,小窗口則不具有足夠的灰度變化信息,不同的窗口形式對匹配信息也會有不同的影響。因此應該合理選取匹配區域的大小和形式來達到較好的匹配結果。
相位匹配是近二十年發展起來的一種匹配演算法,相位作為匹配基元,即認為圖像對中的對應點局部相位是一致的。最常用的相位匹配演算法有相位相關法和相位差——頻率法,雖然該方法是一種性能穩定、具有較強的抗輻射抗透視畸變能力、簡單高效、能得到稠密視差圖的特徵匹配方法。但是,當局部結構存在的假設不成立時,相位匹配演算法因帶通輸出信號的幅度太低而失去有效性,也就是通常提到的相位奇點問題,在相位奇點附近,相位信息對位置和頻率的變化極為敏感,因此用這些像素所確定的相位差異來衡量匹配誤差將導致極不可靠的結果。此外,相位匹配演算法的收斂范圍與帶通濾波器的波長有關,通常要考慮相位卷繞,在用相位差進行視差計算時,由於所採用的相位只是原信號某一帶通條件下的相位,故視差估計只能限制在某一限定范圍之內,隨視差范圍的增大,其精確性會有所下降。
基於特徵的圖像匹配方法是目前最常用的方法之一,由於它能夠將對整個圖像進行的各種分析轉化為對圖像特徵(特徵點、特徵曲線等)的分析的優點,從而大大減小了圖像處理過程的計算量,對灰度變化、圖像變形、噪音污染以及景物遮擋等都有較好的適應能力。
基於特徵的匹配方法是為使匹配過程滿足一定的抗噪能力且減少歧義性問題而提出來的。與基於區域的匹配方法不同,基於特徵的匹配方法是有選擇地匹配能表示景物自身特性的特徵,通過更多地強調空間景物的結構信息來解決匹配歧義性問題。這類方法將匹配的搜索范圍限制在一系列稀疏的特徵上。利用特徵間的距離作為度量手段,具有最小距離的特徵對就是最相近的特徵對,也就是匹配對。特徵間的距離度量有最大最小距離、歐氏距離等。
特徵點匹配演算法嚴格意義上可以分成特徵提取、特徵匹配和消除不良匹配點三步。特徵匹配不直接依賴於灰度,具有較強的抗干擾性。該類方法首先從待匹配的圖像中提取特徵,用相似性度量和一些約束條件確定幾何變換,最後將該變換作用於待匹配圖像。匹配中常用的特徵基元有角點、邊緣、輪廓、直線、顏色、紋理等。同時,特徵匹配演算法也同樣地存在著一些不足,主要表現為:
(l)特徵在圖像中的稀疏性決定了特徵匹配只能得到稀疏的視差場,要獲得密集的視差場必須通過使用插值的過程,插值過程通常較為復雜。
(2)特徵的提取和定位的准確與否直接影響特徵匹配結果的精確度。
(3)由於其應用場合的局限性,特徵匹配往往適用於具有特徵信息顯著的環境中,在缺少顯著主導特徵環境中該方法有很大困難。
總之,特徵匹配基元包含了演算法編程上的靈活性以及令人滿意的統計特性。演算法的許多約束條件均能清楚地應用於數據結構,而數據結構的規則性使得特徵匹配非常適用於硬體設計。例如,基於線段的特徵匹配演算法將場景模型描繪成相互聯結的邊緣線段,而不是區域匹配中的平面模型,因此能很好地處理一些幾何畸變問題,對對比度和明顯的光照變化等相對穩定。特徵匹配由於不直接依賴於灰度,計算量小,比基於區域的匹配演算法速度快的多。且由於邊緣特徵往往出現在視差不連續的區域,特徵匹配較易處理立體視覺匹配中的視差不連續問題。
Ⅳ 匹配的圖的定義
設有M個工人x1,x2,…,xm,和N項工作y1,y2,…,yn,規定每個工人至多做一項工作,而每項工作至多分配一名工人去做。由於種種原因,每個工人只能勝任其中的一項或幾項工作。問應怎樣分配才能使盡可能多的工人分配到他勝任的工作。這個問題稱為人員分配問題。
人員分配問題可以用圖的語言來表述。令X={x1,x2,…,xm},Y={y1,y2,…,yn},構造二分圖G=(X,Y,E)如下:
對於1≤i≤m,1≤j≤n,當且僅當工人xi勝任工作yi時,G中有一條邊xiyi,於是人員分配問題就成為在G中求一個最大匹配的問題。
求最大匹配常用匈牙利演算法,它的基本思想是:對於已知的匹配M,從X中的任一選定的M非飽和點出發,用標號法尋找M增廣鏈。如果找到M增廣鏈,則M就可以得到增廣;否則從X中另一個M非飽和點出發,繼續尋找M增廣鏈。重復這個過程直到G中不存在增廣鏈結束,此時的匹配就是G的最大匹配。這個演算法通常稱為匈牙利演算法,因為這里介紹的尋找增廣鏈的標號方法是由匈牙科學者Egerváry最早提出來的。
理解了這個演算法,就不難寫出人員分配問題的解答了。在給出程序之前,先做一些假設:
為了簡單起見,假設工人數等於工作數,即N=M,且N≤100,這里,N也可以看作是二分圖的|X|和|Y|。
數據從文件input . txt中讀入,首先是N和|E|,下面|E|行每行兩個數(I,J),表示工人I可以勝任工作J,即二分圖中的邊xiyj。
結果輸出到文件output . txt,第一行是最大匹配數s,下面s行每行兩個數(I,J),表示分配工人I做工作J,即匹配邊xiyj。 對於上面的人員分配問題,如果還考慮到工人做工的效率,就可以提出所謂的分派問題:應該怎樣分配才能使總的效率最大?
同上一節,我們可以構造一個二分圖G,如果把工人xi做工作yi的效率wij看作是G中邊xiyi的權,則分派問題就相當於在賦權二分圖G中求一個最大全匹配。
由線性規劃的知識,求二分圖G的最大權匹配,只需在匈牙利演算法的基礎上少許改進即可。它的基本思想是,對二分圖的頂點編號,然後根據編號構造一個新的二分圖G』,最後把求G的最大權匹配轉換為求G』的完美匹配。
下面的這條定理是這個演算法的理論基礎。
定理:設M是賦權圖(權非負)的完全二分圖G=(V,E)的一個完美匹配,這里M是E的子集。如果M滿足:對G的任意一個完美匹配M',均有M的邊權值之和大於M'邊的權值之和,則M是G的最大權匹配。
下面,給出求最大權匹配的程序。輸入文件中首先是N和|E|,下面|E|行每行三個數(I,J,W),表示工人I做工作J的效率是W。程序輸出包括每個工人的選擇和最後的總效益。其它假設參見上一節的演算法假設。這個算 問題:FJOI-信封問題
John先生晚上寫了n封信,並相應地寫了n個信封將信裝好,准備寄出。但是,第二天John的兒子Small John將這n封信都拿出了信封。不幸的是,Small John無法將拿出的信正確地裝回信封中了。
將Small John所提供的n封信依次編號為1,2,…,n;且n個信封也依次編號為1,2,…,n。假定Small John能提供一組信息:第i封信肯定不是裝在信封j中。請編程幫助Small John,盡可能多地將信正確地裝回信封。其中n≤100。
例如,有4封信,而且第一封信不是裝在信封1、2和3中,第2封信不是裝在信封2和3中,則可以確定的第一封信裝在信封4中,而且第二封信則裝在信封1中。但這些條件還不足以確定第三封和第四封信的位置。
分析:
看了這道題目,感覺上和小學數學競賽中的邏輯推理題如出一轍,而邏輯推理題的做法一般是表上作業法。
就以前面的例子為例,根據條件,可以得到如下信息:
1 2 3 4
1 × × ×
2 × ×
3
4
表格 1
由於每一行每一列都應該只有一個√,因此,可以確定第一封信裝在信封4中,於是可以得到:
1 2 3 4
1 × × × √
2 × × ×
3 ×
4 ×
表格 2
然後,發現第二行有3個×,因此剩下一個肯定是√,於是就可以得出第二封信則裝在信封1中:
1 2 3 4
1 × × × √
2 √ × × ×
3 × ×
4 × ×
表格 3
現在,第3行和第4行都只有兩個×,因此無法確定它們放在那個信封里。
這樣我們就得到了一個初步的演算法:在程序中建立一個二維表格,首先,根據條件填入若干個×,然後,檢查所有還未確定的行和列,看有沒有一行(列)中有n – 1個×,如果沒有,就結束;否則,把剩下的那一個空格填上√,並且填了√的那一行(列)的其它位置都填上×。
這種方法雖然很容易想到,但卻有針對這個方法的反例,例如:
圖表 3 一個反例
圖中上半部分的頂點表示「信」,下半部分的頂點表示「信封」,如果信i可能放在信封j中,則在信i和信封j之間連一條邊。由於每個頂點的度數都大於或等於2,即每行每列都至少有兩個空位,故前面的演算法無法進行任何推理,而事實卻並非如此,比如說中間的那封信就只能放在中間的那個信封里。
正是這個反例,使我們需要另闢蹊徑。進一步分析可以發現,信和信封之間的關系,是一種一一對應的關系,這是因為一封信只能放到一個信封里,而一個信封也只能裝一封信。而從信息學的角度來看,這種一一對應的關系,也可以看作是二分圖的匹配關系。
令X={x1,x2,…,xm},Y={y1,y2,…,yn},構造二分圖G=(X,Y,E),當且僅當信i可以放到信封j中,G中存在邊xiyj。這樣,任何一種信的分配方案,都可以看作是圖G的一個完美匹配。例如上圖就有且僅有如下兩種完美匹配:
圖表 4 所有的完美匹配
由於中間的那條匹配邊在兩個完美匹配中都出現了,因此我們認為這條匹配邊是「確定的」,換句話說,這條邊所代表的關系也是確定的。容易看出,當且僅當對於G的所有完美匹配M,都存在一條匹配邊xiyj,則可以確定信i可以放到信封j中。
這樣,我們就從匹配的角度建立了一個新的模型。那麼,這個模型要如何求解呢?
我們當然不能枚舉出G所有的完美匹配,然後再去求它們邊的交集——這和搜索就沒什麼分別。在這里,我們需要對這個模型再做一個小小的轉換:我們發現,條件「對於G的所有完美匹配M,都存在一條匹配邊xiyj」,等價於「如果圖G存在完美匹配,而刪除圖G中的一條邊xiyj得到的圖G』中卻不存在完美匹配」。例如,左下圖刪除了一條「關鍵邊」,故不存在完美匹配,而右下圖刪除的是一條「非關鍵邊」,故存在完美匹配。
圖表 5 刪邊的例子
從表面上看,這個演算法的時間復雜度似乎仍然很高。因為圖G中最多有n2條邊,每次試著刪除一條邊,又需要O(n3)的時間復雜度求一次完美匹配。總的復雜度高達O(n5)。
實際上,我們可以先找到圖G的一個完美匹配M,這樣,刪邊就只需考慮匹配邊了(因為刪除非匹配邊得到G』,M仍然是G』的完美匹配)。這樣,只需刪除n條邊,時間復雜度就降到了O(n4)。
再進一步分析,刪除一條邊以後,沒有必要重新找完美匹配,只需檢查可不可以找到新的增廣鏈就可以了。這樣,時間復雜度就進一步降到了O(n3)。 問題:CTSC-丘比特的煩惱
隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘比特發現,愛情也已不再是完全純潔的了。這使得丘比特很是苦惱,他越來越難找到合適的男女,並向他們射去丘比特之箭。於是丘比特千里迢迢遠赴中國,找到了掌管東方人愛情的神——月下老人,向他求教。
月下老人告訴丘比特,純潔的愛情並不是不存在,而是他沒有找到。在東方,人們講究的是緣分。月下老人只要做一男一女兩個泥人,在他們之間連上一條紅線,那麼它們所代表的人就會相愛——無論他們身處何地。而丘比特的愛情之箭只能射中兩個距離相當近的人,選擇的范圍自然就小了很多,不能找到真正的有緣人。
丘比特聽了月下老人的解釋,茅塞頓開,回去之後用了人間的最新科技改造了自己的弓箭,使得丘比特之箭的射程大大增加。這樣,射中有緣人的機會也增加了不少。
情人節(Valentine's day)的午夜零時,丘比特開始了自己的工作。他選擇了一組數目相等的男女,感應到他們互相之間的緣分大小,並依次射出了神箭,使他們產生愛意。他希望能選擇最好的方法,使被他選擇的每一個人被射中一次,且每一對被射中的人之間的緣分的和最大。
當然,無論丘比特怎麼改造自己的弓箭,總還是存在缺陷的。首先,弓箭的射程盡管增大了,但畢竟還是有限的,不能像月下老人那樣,做到「千里姻緣一線牽」。其次,無論怎麼改造,箭的軌跡終歸只能是一條直線,也就是說,如果兩個人之間的連線段上有別人,那麼莫不可向他們射出丘比特之箭,否則,按月下老人的話,就是「亂點鴛鴦譜」了。
作為一個凡人,你的任務是運用先進的計算機為丘比特找到最佳的方案。
輸入文件第一行為正整數k,表示丘比特之箭的射程,第二行為正整數n(n<30),隨後有2n行,表示丘比特選中的人的信息,其中前n行為男子,後n行為女子。每個人的信息由兩部分組成:他的姓名和他的位置。姓名是長度小於20且僅包含字母的字元串,忽略大小寫的區別,位置是由一對整數表示的坐標,它們之間用空格分隔。格式為Name x y。輸入文件剩下的部分描述了這些人的緣分。每一行的格式為Name1 Name2 p。Name1和Name2為有緣人的姓名,p是他們之間的緣分值(p為小於等於255的正整數)。以一個End作為文件結束標志。每兩個人之間的緣分至多隻被描述一次。如果沒有被描述,則說明他們緣分值為1。
輸出文件僅一個正整數,表示每一對被射中的人之間的緣分的總和。這個和應當是最大的。
分析:
題目中出現了三類物體和兩種關系,我們一個個的來分析:
丘比特的箭,它有一個屬性是射程,
男人和女人,他們的屬性包括名字和位置,
男人和女人之間的關系,這個關系是他們倆的緣分值,
箭與男女的關系,如果兩人的距離不超過箭的射程,並無他人阻擋,則可能被箭射中。題目就是要求一種射箭的方案,使得所有被射中的男女的緣分和最大。
這個問題很像是要求一個二分圖的最大權匹配。因為男人和女人分屬兩個集合,而且同性之間沒有任何關系,因此是一個二分圖。而把緣分值記做邊上的權,則緣分和最大,就對應了這個二分圖中的一個最大權匹配。
要注意的是,題目中雖然說明沒有被描述的男女之間緣分值為1,但這並不代表所得到的二分圖是完全二分圖。因為在構圖的過程中,我們必須還考慮到箭的射程等因素——如果兩人的距離超過了箭的射程,則他倆註定無緣了。
這時問題就來了,因為題目中除了要求緣分和最大之外,還要求「被丘比特選擇的每一個人都要被射中一次」。
你可能會覺得,要緣分和越大,當然被射中的人越多越好,其實並不是這樣。例如:
圖表 6 一個反例
如果要求最大權匹配,則會選擇匹配邊AD,緣分和為10。但由於每個人都要被射中一次,因此我們只能選擇AC和BD,緣分和為2。
換句話說,對於這個例子,正確答案應該是2,而最大權匹配的值卻是10。這說明,這道題目和簡單的最大權匹配還是有區別的,因為題目再要求權值最大的同時,還要求是一個完美匹配,我們稱之為「完美」的最大權匹配。
那麼,這道題是否就不能用最大權匹配來做了呢?先別急,我們再來回顧一下求最大權匹配的演算法:我們通過對頂點編號,將圖G轉化為G』,然後在把求G的最大權匹配轉換為求G』的完美匹配——這里好像就是求完美匹配,但對於上面的那個例子,又為什麼不呢?
原來,對於上面的例子,在標號過後,新的圖G』中加入了一條新的邊BC,而這條邊的權值是0,在圖G』中的完美匹配,實際上是AD和BC,對應到圖G中,就是邊AD了。
因此,如果我們預先把BC的邊的權值設為-∞,再求圖中的最大權匹配,就不會再有問題了。
更一般的,如果要求二分圖的「完美」的最大權匹配,只需將原圖中沒有的邊的權值設為-∞,就可以了。 問題:IPSC-Magic
一個著名的魔術師上台表演,跟著他的是一位漂亮的女助手。魔術師先從他的魔術帽中拽出了幾只兔子,接著他又從女助手的圍巾中變出了一束鮮花,最後,他把女助手鎖在一個看上去空著的箱子里。然後,魔術師選了一個觀眾來配合一個表演:他在一個桌子上擺出N張牌(所有N張牌兩兩不同,且N為奇數)。魔術師讓這位自願者走上講台從中選出(N+1)/2張牌,其餘的牌都在魔術師的帽子里永遠的消失了。魔術師在選出的牌上方晃了晃手,接著他選出其中一張交給那一位自願者,自願者向觀眾展示了手中的這張牌,隨後又將其藏在自己的衣袋裡。那位女助手從箱子里放出來後,來到桌前也在剩下的(N+1)/2-1張牌上方晃了晃手,馬上就說出了自願者衣袋中的是什麼牌。
這是為什麼呢?我們先看一下下面這張表,這是N=5的情況:
自願者選的牌 魔術師選的牌 助手所看到的牌
1,2,3 3 1,2
1,2,4 2 1,4
1,2,5 2 1,5
1,3,4 4 1,3
1,3,5 1 3,5
1,4,5 1 4,5
2,3,4 4 2,3
2,3,5 3 2,5
2,4,5 5 2,4
3,4,5 5 3,4
表格 4
其中,自願者選的牌-魔術師選的牌=助手所看到的牌。表中包括了自願者選牌的所有可能性,它們兩兩不同。而助手所看到的牌,也是兩兩不同的。
首先,魔術師和他的助手都要記住這張表。這樣,當助手看到的牌是2,4時,她就可以肯定自願者選的牌是2,4,5,且魔術師選的牌就是5。
現在,告訴你n的值,要你求出這張表。其中n≤15。
分析:
為了便於分析,我們令M表示從N張牌中選取(N+1)/2張牌的方案數,顯然,從這N張牌中選出(N+1)/2-1張牌的方案數也是M。
我們先從枚舉的角度入手,下面給出兩種枚舉的方法:
對於自願者的每種選牌的方案,枚舉魔術師所選的牌。
對於自願者的每種選牌的方案,所對應的助手看到的牌。
方案一需要M次決策,每次決策中有N種選擇;方案二同樣需要M次決策,而每次決策的可以有M種選擇。從這點上來看,方案一要好得多。、
可是方案一所表現出來的「自願者的選牌的方案」和「魔術師所選的牌」之間的關系並不是一一對應的關系,對於自願者不同的選牌的方案,魔術師可以選擇相同的牌。
而方案二中所表現出的關系正是一一對應的關系,因為題目要求對於自願者不同的選牌的方案,助手看到的牌必須不同。
前面已經提到過,從信息學的角度來看,一一對應,也可以看作是一種二分圖的匹配的關系。因此,方案二更容易讓人聯繫到匹配。
令X=自願者的選牌的方案集,Y=助手看到的牌的集合,構造二分圖G=(X,Y,E),當且僅當 時,G中存在邊xiyj。這樣,就把原問題轉換成求圖G的一個完美匹配。
下面問題又來了。首先,二分圖的頂點高達2M個,當N=15時,M接近8000,而求匹配的復雜度為O(M3),這樣高的復雜度,如何能夠承受?
注意到這個圖是一個稀疏圖,一共只有MN條邊。而稀疏二分圖匹配的復雜度也可以表示成O(|V|×|E|)。因此,時間復雜度應該是O(M2N),基本上可以承受了。
另外,由於這是稀疏圖,我們用鄰接表來存儲,則空間復雜度僅為O(NM),同樣可以承受。
最後要說明的是,這道題目也可以用構造法以獲得更好的效率,但不如匹配容易想到。具體的構造方法這里就不給出了,讀者可以自己想一想。 問題:OOPC-神秘之山
M個人在追一隻奇怪的小動物。眼看就要追到了,那小東西卻一溜煙躥上一座神秘的山。眾人抬頭望去那山看起來就是這個樣子:
圖表 7 樣例示意圖
那山由N+1條線段組成。各個端點從左到右編號為0…N+1,即x<x[i+1](0≤i≤n)。而且有y[0]=y[n+1]=0。
根據經驗來說那小東西極有可能藏在1…N 中的某個端點。有趣的是大家很快發現了原來M恰好等於N,這樣,他們決定每人選一個點,看看它是否在躲那裡。
一開始,他們都在山腳下,第i 個人的位置是(s,0)。他們每人選擇一個中間點(x,0),先以速度w水平走到那裡,再一口氣沿直線以速度c爬到他的目的地。由於他們的數學不好,他們只知道如何選擇一個最好的整數來作為中間點的橫坐標x。而且很明顯,路線的任何一個部分都不能在山的上方(他們又不會飛)。
他們不希望這次再失敗了,因此隊長決定要尋找一個方案,使得最後一個到達目的地的人盡量早點到。他們該怎麼做呢?
其中1≤N≤100,0≤x,y,s≤1000,1≤c<w≤100。
輸入
第一行包含一個整數N。以下N+2行每行,包含兩個整數xi和yi,代表相應端點的坐標。以下N行每行包含3個整數:ci,wi和si,代表第i個人的爬山速度,行走速度和初始位置
輸出
輸出最後一個人到達目的地的最早可能時間,四捨五入到小數點後兩位。
樣例輸入
3
0 0
3 4
6 1
12 6
16 0
2 4 4
8 10 15
4 25 14
樣例輸出
1 . 43
樣例說明
在這里例子中,第一個人先到(5 .0)再爬到端點2;第二個人直接爬到端點3;第三個人先到(4 .0)再爬到端點1。如下圖:
圖表 8 樣例的解答
分析:
題目中的數據繁多復雜,我們先把他們提出來一個個分析:
人,共n個,與之有關的有初始橫坐標s,速度w和c
山頭,共n個,與之有關的有坐標x和y
根據這些信息,可以得到,人和山頭的關系:t[I,J],表示第i個人到達山頭j所需的最短時間。
題目中已經指明是一個人負責一個山頭,這顯然是一個一一對應的關系,因此,我們可以從二分圖的匹配的角度來考慮這個問題。
那麼,這道題目屬於哪一種匹配呢?是簡單的最大匹配,還是最大權匹配,或者是前面所提到的「完美」最大權匹配呢?
其實都不是。因為一般的最大權匹配,一個匹配的權的定義是該匹配中所有邊上權的和,而這道題目,一個匹配的權是指該匹配的邊上權值的最大值。題目要求這個最大值最小,我們暫且稱之為「最小最大匹配」。
直接求解似乎不太方便。換一個角度,如果我們給出一個時間,就可以用完美匹配的演算法來判斷能否在這個時間內完成所有的工作。
具體的來說,對於給定的二分圖G和最大時間T,我們可以導出新的圖G』,G』中所有邊的權都不超過T。如果G』存在完美匹配,則所有工作可以在T時間內完成,否則則不能。
這樣,一個簡單的演算法就誕生了:依次增加T,知道求出一個完美匹配為止。由於二分圖中的邊不會超過n2,因此T最多增加n2次,而每次增加T的值,需要O(n2)的時間來找增廣鏈,這樣總的時間復雜度就是O(n4)。
我們還可以採用二分查找的方法來尋找這個T,這樣的演算法時間復雜度就可以降到為O(n3logN)。
Ⅵ 圖像匹配的概述
圖像匹配是指通過一定的匹配演算法在兩幅或多幅圖像之間識別同名點,如二維圖像匹配中通過比較目標區和搜索區中相同大小的窗口的相關系數,取搜索區中相關系數最大所對應的窗口中心點作為同名點。其實質是在基元相似性的條件下,運用匹配准則的最佳搜索問題。