خوارزمية إدموندز-كارب

في علوم الكمبيوتر ، خوارزمية إدموندز-كارب هي تنفيذ لطريقة فورد-فولكرسون لحساب التدفق الأقصى في شبكة تدفق في الوقت المناسب. تم نشر الخوارزمية لأول مرة بواسطة يفيم دينيتز في عام 1970، [1] [2] ونشرها بشكل مستقل جاك إدموندز وريتشارد كارب في عام 1972. [3] تتضمن خوارزمية دينيتز تقنيات إضافية تقلل من وقت التشغيل إلى . [2]

خوارزمية

الخوارزمية مماثلة لخوارزمية فورد-فولكرسون ، باستثناء أن ترتيب البحث عند العثور على مسار الزيادة محدد. يجب أن يكون المسار الموجود هو أقصر مسار متاح السعة. يمكن العثور على ذلك من خلال بحث العرض أولاً ، حيث نطبق وزنًا قدره 1 على كل حافة. ​​يتم العثور على وقت تشغيل من خلال إظهار أنه يمكن العثور على كل مسار زيادة في الوقت المناسب، وأنه في كل مرة يصبح فيها أحد الحواف على الأقل مشبعًا (حافة بها أقصى تدفق ممكن)، وأن المسافة من الحافة المشبعة إلى المصدر على طول مسار الزيادة يجب أن تكون أطول من آخر مرة كانت مشبعة فيها، وأن الطول هو . خاصية أخرى لهذه الخوارزمية هي أن طول أقصر مسار زيادة يزداد بشكل رتيب. يوجد دليل يمكن الوصول إليه في مقدمة الخوارزميات . [4]

الكود الزائف

خوارزمية EdmondsKarp هي 
    المدخل :
        يجب أن يكون الرسم البياني    (graph[v] عبارة عن قائمة بالحواف الخارجة من الرأس v في 
                الرسم البياني الأصلي والحواف العكسية المبنية المقابلة لها 
                والتي تُستخدم للتدفق العكسي. 
                يجب أن يكون لكل حافة سعة "cap"، وتدفق، ومصدر "s" ومصب "t" 
                كمعلمات، بالإضافة إلى مؤشر للحافة العكسية "rev".) 
        s        (رأس المصدر) 
        t        (رأس المصب) 
    output :
        التدفق     (قيمة التدفق الأقصى)
    
    التدفق := 0    (تهيئة التدفق إلى الصفر) 
    التكرار 
        (قم بتشغيل بحث أولًا بالعرض (bfs) للعثور على أقصر مسار st. 
        نستخدم "pred" لتخزين الحافة المأخوذة للوصول إلى كل رأس، 
        حتى نتمكن من استعادة المسار بعد ذلك) 
        q := queue ()
        q.push(s)
        pred := array (graph.length)
         while  not empty(q) and pred[t] = null
            cur := q.pop()
            بالنسبة للحافة e في الرسم البياني [cur]، افعل ذلك 
                إذا كان pred[et] = null  و et ≠ s و e.cap > e.flow ، إذن
                    pred[et] := e
                    س.ادفع(و)

        إذا  لم يكن (pred[t] = null) إذن 
            (لقد وجدنا مسارًا متزايدًا. 
            انظر إلى مقدار التدفق الذي يمكننا إرساله)  
            df := 
            بالنسبة إلى (e := pred[t]؛ e ≠ null؛ e := pred[es]) افعل 
                df := min (df، e.cap - e.flow)
             (وتحديث الحواف بهذا المقدار) 
            بالنسبة إلى (e := pred[t]؛ e ≠ null؛ e := pred[es]) افعل
                التدفق الإلكتروني := التدفق الإلكتروني + df
                e.rev.flow := e.rev.flow - df
            التدفق := التدفق + df

    حتى pred[t] = null   (أي حتى لم يتم العثور على مسار زيادة)
     تدفق
 العودة

مثال

بالنظر إلى شبكة مكونة من سبع عقد، المصدر A، والمصرف G، والقدرات كما هو موضح أدناه:

في الأزواج المكتوبة على الحواف، يكون التدفق الحالي، و هو السعة. السعة المتبقية من إلى هي ، السعة الإجمالية، مطروحًا منها التدفق المستخدم بالفعل. إذا كان التدفق الصافي من إلى سالبًا، فإنه يساهم في السعة المتبقية.

طريق سعة الشبكة الناتجة

لاحظ كيف أن طول مسار الزيادة الذي وجدته الخوارزمية (باللون الأحمر) لا يتناقص أبدًا. المسارات التي وجدتها هي الأقصر قدر الإمكان. التدفق الذي وجدته يساوي السعة عبر الحد الأدنى للقطع في الرسم البياني الذي يفصل المصدر عن المصب. يوجد حد أدنى واحد فقط للقطع في هذا الرسم البياني، يقسم العقد إلى مجموعات و ، مع السعة

ملحوظات

  1. ^ دينيتش، إي إيه (1970). "خوارزمية لحل مشكلة التدفق الأقصى في شبكة مع تقدير القدرة". الرياضيات السوفييتية - دوكلادي . 11. دوكلادي: 1277-1280.
  2. ^ من قبل يفيم دينيتز (2006). "خوارزمية دينيتز: النسخة الأصلية ونسخة إيفين" (PDF) . في أوديد جولدريتش ؛ أرنولد ل. روزنبرج؛ آلان ل. سلمان (المحررون). علوم الكمبيوتر النظرية: مقالات في ذكرى شمعون إيفين . سبرينغر. ص 218-240. رقم ISBN 978-3-540-32880-3.
  3. ^ إدموندز، جاك ؛ كارب، ريتشارد م. (1972). "التحسينات النظرية في الكفاءة الخوارزمية لمشاكل تدفق الشبكة" (PDF) . مجلة جمعية آلات الحوسبة . 19 (2): 248-264. doi :10.1145/321694.321699. S2CID  6375478.
  4. ^ توماس إتش كورمين ، تشارلز إي. ليسرسون ، رونالد إل. ريفست وكليفورد شتاين (2009). "26.2". مقدمة للخوارزميات (الطبعة الثالثة). مطبعة معهد ماساتشوستس للتكنولوجيا. ص 727-730. رقم ISBN 978-0-262-03384-8.{{cite book}}: CS1 maint: multiple names: authors list (link)

مراجع

  1. الخوارزميات والتعقيد (انظر الصفحات 63-69). https://web.archive.org/web/20061005083406/http://www.cis.upenn.edu/~wilf/AlgComp3.html
Retrieved from "https://en.wikipedia.org/w/index.php?title=Edmonds–Karp_algorithm&oldid=1250833464"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate