[英]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。
我希望這可以幫助別人。
如果我正確理解問題,則可能沒有多項式解。 因此,我將實現以下算法:
這等效於旅行商的問題(因此是NP-Complete),因為如果您可以有效地解決此問題,則可以簡單地通過將每個成本替換為對價來解決TSP。
這意味着您無法完全解決。 另一方面,這意味着您可以完全按照我說的去做(用倒數代替每個成本),然后對這個問題使用任何已知的TSP近似方法。
對我來說似乎是最大流量問題 。
是否有可能通過從任何給定的起點貪婪地選擇下一個最昂貴的選項(忽略跳轉到被訪問的節點)並在所有節點都被訪問后停止? 如果您陷入死胡同,則返回到您之前沒有死胡同的位置,然后貪婪地選擇。 這將需要一些工作,並且可能需要類似堆棧的方法來保持您的路徑。我認為,只要成本井井有條且非負成本,這將非常有效。
使用遺傳算法。 它們旨在解決您提出的問題,從而迅速減少時間復雜度。 用您選擇的語言檢查AI庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.