簡體   English   中英

匹配算法

[英]Matching algorithm

奇怪的問題不是真正的代碼,而是邏輯,希望可以將其張貼在這里

我有一個可以視為圖形的數據結構。 每個節點可以支持許多鏈接,但是每個節點的值限制為一個值。 所有鏈接都是雙向的。 每個鏈接都有成本。 成本取決於節點之間的歐幾里得差異,每個節點中兩個參數的最小值。 和一個全局修飾符。

我希望找到圖表的最大費用。

我想知道是否有一種聰明的方法來找到這樣的匹配項,而不是蠻力地進行……這很丑陋……而且我不確定如果不花費700萬年的時間我該怎么做。

澄清:

Global variable = T
many nodes N each have E,X,Y,L
L is the max number of links each node can have.
cost of link A,B = Sqrt(  min([a].e | [b].e)  ) x 
     ( 1 + Sqrt( sqrt(sqr([a].x-[b].x)+sqr([a].y-[b].y)))/75 + Sqrt(t)/10 )


total cost =sum all links.....and we wish to maximize this.

節點的平均值為40-50,范圍為(20..600),平均節點鏈接因子為3,范圍為0-10。

為了使本文的所有人都能理解,我建議您重新考慮一下圖論算法:

  • Dijkstra算法
  • 一個明星
  • 貪婪
  • 深度/廣度優先
  • 甚至是動態編程(在某些情況下)
  • 等。 等。

那里是您問題的正確解決方案。 我建議先看看Dijkstra。

我希望這可以幫助別人。

如果我正確理解問題,則可能沒有多項式解。 因此,我將實現以下算法:

  1. 通過Ben greedy尋找解決方案。 為此,您要按成本對所有邊進行排序,然后從最高點開始對它們進行遍歷,並在可能的情況下向圖中添加一條邊,並在節點不能接受更多邊時跳過。
  2. 查看您的優勢,並嘗試通過使用啟發式方法來更改它們以歸檔更高的成本。 我想到的第一個:您遍歷節點(A,B,C,D)的所有4個元組,並且如果當前圖形具有邊AB,CD但AC,BD更好,那么您進行更改。
  3. 可選地,具有6-元組的事物或其他遺傳算法 (之所以這樣稱呼,是因為它們通過突變起作用)。

這等效於旅行商的問題(因此是NP-Complete),因為如果您可以有效地解決此問題,則可以簡單地通過將每個成本替換為對價來解決TSP。

這意味着您無法完全解決。 另一方面,這意味着您可以完全按照我說的去做(用倒數代替每個成本),然后對這個問題使用任何已知的TSP近似方法。

對我來說似乎是最大流量問題

是否有可能通過從任何給定的起點貪婪地選擇下一個最昂貴的選項(忽略跳轉到被訪問的節點)並在所有節點都被訪問后停止? 如果您陷入死胡同,則返回到您之前沒有死胡同的位置,然后貪婪地選擇。 這將需要一些工作,並且可能需要類似堆棧的方法來保持您的路徑。我認為,只要成本井井有條且非負成本,這將非常有效。

使用遺傳算法。 它們旨在解決您提出的問題,從而迅速減少時間復雜度。 用您選擇的語言檢查AI庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM