الگوریتم Edmonds-Karp: تجزیه و تحلیل دقیق بهره وری

الگوریتم Edmonds-Karp یک پیاده سازی خاص از روش فورد-Fulkerson برای محاسبه حداکثر جریان در یک شبکه جریان است، در حالی که روش اصلی فورد-Fulkerson از جستجوی خودسرانه برای تقویت مسیرهای استفاده می کند (که می تواند منجر به زمان نمایی در موارد پاتولوژیک)، Edmonds-Karp یک نظریه جستجوی مبتنی بر BFS را اجرا می کند که باعث می شود که سرعت یک روند (که به خوبی مشخص شده است).

توضیحات الگوریتمی و Key Properties

[در این باره] [[[[ویرایش]] [[[[۱]]]] [[۱۰]]] [[۱۰]]] [[۱۰]]]] [[۳]]]] [۱۰]] [۱۰]]] [۱۰]] [۱۰]] [۳]] [۳] [۳]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [بر [و [و [بر [بر [بر [بر [بر [بر [بر [بر [بر [و] الگوریتم] [بر [به [و [ [و] [به عنوان] [به عنوان] [FLT:] [به عنوان] [به عنوان [به عنوان] [بر [بر [به عنوان] [بر [بر [بر [به [به] [به] [به [بر [بر [به [به عنوان منبع] [و] [به عنوان] [به [و] [ [ [ [به [به عنوان] [و] [به عنوان] [به عنوان] تابع [F

  1. در ابتدا، به صورت مستقیم به صورت زیر به صورت زیر به صورت زیر به صورت زیر استفاده می شود.
  2. و به جای آن، به صورت زیر به صورت زیر به صورت زیر به آن اشاره کنید.
  3. در این باره به |[[ویرایش] [FLT1] بروید و برای یافتن کوتاه ترین مسیر هدایت شده برای t [FLT] [F7] [FLT] [F] [FLT] [2] [مشرکانه شده است.
  4. اگر هیچ راهی وجود نداشته باشد، خاتمه دهید؛ جریان فعلی حداکثر است.
  5. در غیر این صورت، ظرفیت تنگنا را در طول مسیر (حداقل ظرفیت باقی مانده) تعیین کنید.
  6. جریان آگوست با این مقدار در طول مسیر و به روز رسانی ظرفیت های باقی مانده.
  7. تکرار از مرحله 2

در این میان، هر یک از راه های پیش رو، کوتاه ترین مسیر را در نمودار باقی مانده است: یک ویژگی مهم، از فاصله (در لبه ها) از برای پیچیدگی مستقیم این است.

تحلیل پیچیدگی

[در این میان] [[[[[ویرایش]] [[[[ویرایش]]] [[[[ویرایش]]] [[[[۱]]]] [[۱۰]]] [[۱۰]]]] [۱۰]]] [۱۰] [۱۰]]] [۱۰]] [۱۰]] [۱۰]] [۱۰]] [۱۰]] [۱۰]] [۱۰] [۱۰] [۱۰] [۱۰] [۱]]] [۱۰] [۱۰]] [۱۰]] [۱]] [۱۰] [۱۰]]] [۱۰] [۱۰]]] [۱۰] [۱۰] [۱۰]]]] [۱۰]]]] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰]]]]] [۱۰] [۱۰] [۱۰] [۱۰]]]] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰]] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰] [۳] [۱۰] [۱۰] [۱۰] [۱۰] [

در این راستا، تعداد افزایش ها در اکثر موارد (FLT:0) [FLT] است؛ ؛ بنابراین زمان کلی است که در آن واحد (FLT3) بسیار کم است؛ (و یا [v+E] [F5] که برای این نمودار بسیار متراکم است.

مقایسه با دیگر الگوریتم های جریان مکس

الگوریتم Dinic

الگوریتم دینیک همچنین از BFS برای ساخت یک نمودار سطح استفاده می کند، اما سپس اجازه می دهد تا چندین مسیر تقویت در یک مرحله از طریق DFS در نمودار سطح، این تعداد BFS را به اکثر (FLT:0V [FLT: 0LT-1] (از آنجا که سطح سینک هر فاز افزایش می یابد) کاهش می دهد.

الگوریتم های Push-Relabel Algorithms

روش های Push-relabel مانند الگوریتم عمومی یا بالاترین برچسب (V2 √E) یا O (V3) دسترسی دارند، آنها با فشار دادن جریان به طور محلی در امتداد لبه های واجد شرایط کار می کنند و Relabel های ثابت برای حفظ الگوریتم های معتبر تر استفاده می شود، اما اغلب سرعت بیشتری در جریان های فشرده سازی بزرگ، به خصوص استفاده می کنند.

یکی دیگر از انواع مهم مقیاس پذیری الگوریتم است که یک پارامتر مقیاسی را به روش فورد-Fulkerson اضافه می کند، تولید (FLT:2O (E2 log U) که در آن U حداکثر ظرفیت است.

چرا ادموند-کلپ هنوز اهمیت دارد؟

علی رغم آهسته تر بودن نسبت به Dinic و Push-relabel، Edmonds-Karp به طور منظم ارزشمند است. سادگی آن و اثبات شهودی از زمان اجرا (بر اساس کوتاه ترین مسیر تکتونی بودن) آن را به یک ابزار آموزش عالی تبدیل می کند. بسیاری از برنامه های علوم کامپیوتر، ادموند-Karp را قبل از حرکت به روش های پیشرفته تر، به ویژه شبکه های کوچک (اگر تعداد کمی از عملکرد کم است) و کم ظرفیت های عملکرد به ویژه چند هزار لبه های عملکرد کوچک است.

مفاهیم عملی و استفاده از پرونده ها

در برنامه های دنیای واقعی، انتخاب الگوریتم به شدت به محدودیت های مشکل بستگی دارد:

  • [[ویرایش] [[[ویرایش] [[۱]] [۱۰] [۱]] [۱۰]] [[۳]] [۱۰] [۱۰]] [۱۰]] [۱۰] [۱] [۱۰] [۱]] [۱۰] [۱۰] [۱۰]] [۱۰]] [۲]] [۲] [۲] [۲]] [۲] [۲]] [۲] [۲] [۲] [۲]] [۲] [۲] [۲] [۲] [۲]]] [۲] [۲]]] [۲] [۲]] [۲] [۲]] [۲]]]]] [۲]]]] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲]]] [۲] [۲] [۲] [۲]]] [۲] [۲] [۲]] [۲] [۲] [۲] [۲] [۲] [۲] [۲] [۲]]] [۲] [۲] [۲] [۲] [۲
  • مهندسی ترافیک : در مخابرات و شبکه های جاده، جریان اغلب بزرگ و نمودارها کم رنگ هستند. Dinic یا فشار برچسب به دلیل مقیاس بهتر ترجیح داده می شوند.
  • تقسیم بندی [FLT: نمودار الگوریتم برای بینایی کامپیوتر اغلب به محاسبات حداکثر جریان / برش متکی است، اما الگوریتم بویکوف-کلموگوروف، یک روش تقویت تخصصی، اغلب الگوریتم های عمومی برای این نمودار های شبکه مانند، اما ادموند-کلپ می تواند برای مشکلات کوچکتر استفاده شود.
  • آموزش و پرورش و بهره برداری [FLT 1]: هنگامی که سادگی و تصحیح در سرعت خام برجسته هستند، Edmonds-Karp یک انتخاب امن است.

عملکرد تجربی

معیارهای روی گراف های تصادفی نشان می دهد که ادموند-کلپ اغلب در زمان نزدیک به خط در عمل اجرا می شود، زمانی که ظرفیت های لبه کوچک هستند (O (1) ) زیرا تعداد افزایش مقدار صحیح در حداکثر مقدار جریان، که ممکن است کوچک باشد، برای شبکه های با ظرفیت بالا، به عنوان مثال، می تواند مقدار زیادی را افزایش دهد؛ به عنوان مثال، به عنوان یک مقدار صحیح است.

پیاده سازی

هنگام پیاده سازی Edmonds-Karp، دقت مدیریت گراف باقی مانده ضروری است. نمایندگی هر دو لبه جلو و عقب اجازه می دهد تا تقویت آسان و عقب ردیابی.استفاده از یک لیست آگهی با اشاره به لبه های معکوس (یا ذخیره شاخص های لبه معکوس) به روز رسانی ساده تر می کند. BFS همچنین باید پیشینیان را برای بازسازی مسیر استفاده از حافظه (F) مانند ELT (1) + ELT + ELT + دیگر.

بهینه سازی ها عبارتند از:

  • اگر در ابتدا به آن ها اجازه داده شود، نمی توان به آن ها اشاره کرد.
  • استفاده از ظرفیت های صحیح و جریان برای جلوگیری از مسائل نقطه شناور.
  • افزایش چند مرحله ای اگر نمودار دارای لبه های موازی زیادی باشد (هرچند کمتر رایج است).

برای شبکه های بسیار بزرگ، استفاده از یک BFS پویا را در نظر بگیرید که به طور فزاینده ای مسافت ها را به روز می کند، اما این اغلب پیچیدگی را بدون سود قابل توجهی برای Edmonds-Karp به طور خاص اضافه می کند.

ارتباط با روش فورد-Fulkerson

جک ادموندز و ریچارد کارپ الگوریتم خود را در سال 1972 منتشر کردند و نشان دادند که استفاده از BFS حداکثر الگوریتم جریان را به صورت تمام وقت به دست می آورد، قبل از آن، روش فورد-Fulkerson (1956) به طور جدی سیستم انتخاب مسیر را مشخص نکرد و می دانست که انتخاب های ضعیف می تواند به زمان نمایی منجر شود.

گسترش و تنوع

انواع ادموند-Karp شامل:

  • نسخه مقیاس پذیری ؛ به جای آنکه همیشه در کوتاه ترین مسیر، الگوریتم با پارامتر مقیاسی کار می کند و فقط لبه ها را با ظرفیت باقی مانده Δ در نظر می گیرد، این بازده یک (E2 log) را به دست می آورد [F5:5] الگوریتم [2 [2 ]
  • بهینه سازی ظرفیت واحد ؛ هنگامی که همه ظرفیت ها 1، الگوریتم مسیر بر اساس BFS (E √V) متخصص در الگوریتم Hopcroft-Karp است، هر چند که دوم از متناوب دقیق BFS /DFS برای دستیابی به (FLT:2O (E √V) استفاده می کند.
  • Integrament : الگوریتم به طور طبیعی جریان های جدایی ناپذیر را حفظ می کند، زمانی که ظرفیت ها یکپارچه هستند، آن را برای مشکلات سازنده مناسب می کند.

نتیجه گیری

الگوریتم Edmonds-Karp یک روش قابل اعتماد و به خوبی درک برای حل حداکثر مشکلات جریان است، آن O (V E2) پیچیدگی زمان بدترین حالت آن را غیر عملی برای شبکه های پایه یا متراکم، اما سادگی و اثبات روشن از ⁇ زمان اجرا شده است سیمان محل خود را در الگوریتم های راستی آزمایی، و یا اصلاح سیستم های کوچک، به طور کلی نیاز به یک روش های پایه و یا اصلاح، به طور کلی.

علاوه بر خواندن الگوریتم های پیشرفته جریان را می توان در مقاله ویکی پدیا و در کتاب درسی کلاسیک Introduction to Algorithms (CLRS] یافت.