با نوشتن یک الگوریتم بهینه و در قسمت‌هایی با بهره گرفتن از الگوریتم‌های بهینه‌ای ‌از جمله الگوریتم‌های کوتاه‌ترین مسیر و اعمال تغییراتی در آنها کم هزینه ترین بیشینه جریان را به دست می‌آورم.
شروط گراف G
الف – جهت دار است
ب- یک منبع و یک مقصد وجود دارد
ج– هر یال شامل یک ظرفیت مثبت است
د– هر یال دارای هزینه‌ای ‌که تابعی از جریان در واحد است.
ه– غیر از گره منبع و مقصد ، ‌مجموع جریان‌های وارد شده به یک گره برابر با مجموع جریان‌های خارج شده از آن گره می‌باشد.
(۳-۵)  and
ی- حداکثر جریانی که از یک یال می گذرد نمی تواند از ظرفیت آن یال بالاتر باشد  .
بنا به تعاریف و شرایط گفته شده در بخش های قبلی به شکل زیر به حل مسئله می پردازیم:
مسیر‌های بین مبدا و مقصد یافت می‌شود. به عبارت دیگر بین مسیرهای بیشینه جریان ، کوتاه‌ترین مسیر(الگوریتم بلمن - فورد) جواب مسئله می‌باشد عملا الگوریتم بلمن – فورد در اینجا می‌تواند کمترین هزینه که تابعی از جریان در واحد و نگاشتی از کوتاه‌ترین مسیر است را با توجه به مسیرهای با بیشینه جریان بدست می‌آورد.
با توجه به ظرفیت باقیمانده هر یال (تفاضل جریان عبوری و ظرفیت هر یال) ‌مقدار جریانی که می‌تواند عبور کند که عملا برابر با مینیمم ظرفیت باقیمانده بین یال‌های مسیر می‌باشد را همراه هزینه به دست می‌آوریم.
(۳-۶)
اگر هیچ مسیر دیگری وجود نداشته باشد (حتی اگر یک یال باشد نتواند جریان در نظر گرفته شده را عبور دهد عملا این یال از مسیر خارج می‌شود) عملا الگوریتم به پایان رسیده است.
مجموع جریان وارد شده به مقصد ، بیشینه جریان را می‌دهد.
(۳-۷)
هزینه گراف نتیجه به دست آمده را به دست می آوریم.
(۳-۸)
اگر بیشتر از چندین حالت برای رسیدن به بیشینه جریان وجود داشته باشد حالتی را که کمترین هزینه را دارد جواب مسئله می‌باشد.
پایان نامه - مقاله - پروژه
توسط الگوریتم بلمن-فورد کمترین هزینه انتقال یک واحد جریان از گره مبدا به هر گره را به دست می‌آوریم.
, (۳-۹)
سپس با بهره گرفتن از مقادیر به دست آمده از الگوریتم بلمن – فورد شروع به محاسبه بیشینه جریان می‌نماییم. روی هر یال
(۳-۱۰)
حداکثر جریان عبوری از مسیر مورد نظر رابه دست می‌آوریم
(۳-۱۱)
در هر دور با توجه به مسیر طی شده مقدار هزینه را بر اساس فرمول زیر به دست می‌آوریم:
(۳-۱۲)
و در نهایت جمع کل جریان‌های عبوری از هر مسیر برابر با حداکثر جریان می باشد:
(۳-۱۳)
و جمع کل هزینه‌های هر مسیر برابر با کمترین هزینه عبور جریان می‌باشد
(۳-۱۴)
Algorithm Bellman-Ford(G,s)
Input : G=(V,E), s(the source vertex)
Output : Sequence d and a boolean return value
begin
for all vertices w do
dw =
ds = 0
for i = 1 to |V|-1 do
for all edge (u,v) in E do
if du + weight(u,v) < dv then
dv = du + weight(u,v)
for all edge (u,v) in E do
if du + weight(u,v) < dv then
return False
return True
Algorithm CostFlow(G,s,t)
Input : G=(V,E), s(the source vertex) , t(the destination vertex)
Output : Minimum cost Maximum flow
Begin

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...