الگوریتم ادمون
در نظریه گراف، شاخهای از ریاضیات، الگوریتم ادمون برای پیدا کردن انشعاب بهینهٔ بیشینه یا کمینه به کار میرود. زمانی که راسها با یالهای وزن دار و جهت دار به یکدیگر متصل شده باشند، دیگر نمیتوانیم از الگوریتم درخت پوشای کمینه استفاده کنیم. بنابراین از الگوریتم انشعاب بهینه استفاده میکنیم که در سال ۱۹۶۷ توسط ادمون ارائه شد. برای یافتن مسیر با طول بیشینه، ابتدا یالها بر اساس وزن شان مرتب میشوند. از بزرگترین یال شروع کرده و آن یال بین دو راس قرار میگیرد. بعد از آن به سراغ یال بزرگتر بعدی رفته و همین کار برای باقی یالها نیز انجام میشود. اگر یالی باعث ایجاد دور در گراف شود، آن یال حذف میشود. برای پیدا کردن مسیر با طول کمینه نیز، یالها از کوچک به بزرگ مرتب میشوند و کار با یال کوچکتر شروع میشود.
زمان اجرا
زمان اجرای این الگوریتم برابر با
الگوریتم
تابعی مانند
توصیف دقیق الگوریتم در ادامه آمدهاست. با گرفتن یک گراف وزن دار و جهت دار مانند
توصیف
این الگوریتم یک توصیف شهودی بازگشتی دارد. تابعی مانند
توصیف دقیق الگوریتم در ادامه آمدهاست. با گرفتن یک گراف وزن دار و جهت دار
حالا برای هر راس
اگر
اگر
در غیر این صورت، اگر
ما هیچ یال دیگری را به
ریشهٔ
با صدا کردن تابع
دقت کنید که تابع
پیاده سازی
BV را یک مجموعهای برای رئوس و BE را مجموعهای برای یالها در نظر بگیرید. اگر V را یک راس در نظر بگیرید و e هم یالی با بیشترین وزن مثبت و متصل به V باشد، Ci یک دور خواهد بود. G۰ = (V۰,E۰) گراف اصلی است و ui یک راس جانشین برای Ci است.
i=0
A:
if then goto B
for some vertex and {
find an edge such that w(e) = max{ w(y,v)|(y,v) Ei}
if w(e) ≤ 0 then goto A
}
if contains a circuit {
i=i+1
construct by shrinking to
modify BE, BV and some edge weights
}
goto A
B:
while i ≠ 0 {
reconstruct and rename some edges in BE
if was a root of an out-tree in BE {
and
}else{
and
}
i=i-1
}
Maximum branching weight =
منابع
- Y. J. Chu and T. H. Liu, "On the Shortest Arborescence of a Directed Graph", Science Sinica, vol. 14, 1965, pp. 1396–1400.
- J. Edmonds, “Optimum Branchings”, J. Res. Nat. Bur. Standards, vol. 71B, 1967, pp. 233–240.
- R. E. Tarjan, "Finding Optimum Branchings", Networks, v.7, 1977, pp. 25–35.
- P.M. Camerini, L. Fratta, and F. Maffioli, "A note on finding optimum branchings", Networks, v.9, 1979, pp. 309–312.
- Alan Gibbons Algorithmic Graph Theory, Cambridge University press, 1985 ISBN 0-521-28881-9
- H. N. Gabow, Z. Galil, T. Spencer, and R. E. Tarjan, “Efficient algorithms for finding minimum spanning trees in undirected and directed graphs,” Combinatorica 6 (1986), 109-122.
پیوند به بیرون
- The Directed Minimum Spanning Tree Problem Description of the algorithm summarized by Shanchieh Jay Yang, May 2000.
- Edmonds's algorithm (edmonds-alg) – An متنباز implementation of Edmonds's algorithm written in C++ and licensed under the پروانه امآیتی. This source is using Tarjan's implementation for the dense graph.
- AlgoWiki – Edmonds's algorithm - A public-domain implementation of Edmonds's algorithm written in Java.