خوارزمية مجلة فورتشن

رسوم متحركة لخوارزمية الحظ
رسوم متحركة لخوارزمية مجلة فورتشن

خوارزمية فورتشن هي خوارزمية خط المسح لإنشاء مخطط فورونوي من مجموعة نقاط في مستوى ثنائي الأبعاد باستخدام زمن قدره O ( n  log n ) ومساحة قدرها O( n ). [ 1 ] [ 2 ] نُشرت هذه الخوارزمية لأول مرة بواسطة ستيفن فورتشن عام 1986 في بحثه بعنوان "خوارزمية خط المسح لمخططات فورونوي". [ 3 ] 

وصف الخوارزمية

تحافظ الخوارزمية على كلٍ من خط المسح وخط الشاطئ ، وكلاهما يتحرك عبر المستوى مع تقدم الخوارزمية. خط المسح هو خط مستقيم، ويمكننا اصطلاحًا افتراض أنه رأسي ويتحرك من اليسار إلى اليمين عبر المستوى. في أي لحظة أثناء الخوارزمية، تكون نقاط الإدخال الواقعة على يسار خط المسح قد أُدرجت في مخطط فورونوي، بينما لم تُؤخذ النقاط الواقعة على يمينه في الاعتبار بعد. أما خط الشاطئ، فهو ليس خطًا مستقيمًا، بل منحنى معقد ومتقطع إلى يسار خط المسح، ويتكون من أجزاء من قطع مكافئة ؛ وهو يفصل الجزء من المستوى الذي يمكن فيه معرفة مخطط فورونوي، بغض النظر عن النقاط الأخرى التي قد تقع على يمين خط المسح، عن بقية المستوى. لكل نقطة تقع على يسار خط المسح، يمكن تعريف قطع مكافئ من النقاط المتساوية البعد عن تلك النقطة وعن خط المسح؛ وخط الشاطئ هو حدود اتحاد هذه القطع المكافئة. مع تقدم خط المسح، ترسم رؤوس خط الشاطئ، حيث يتقاطع قطعان مكافئان، حواف مخطط فورونوي. يتقدم خط الشاطئ مع الحفاظ على قاعدة كل قطع مكافئ في منتصف المسافة تمامًا بين النقاط التي تم مسحها في البداية بخط المسح، والموضع الجديد لخط المسح. رياضيًا، يعني هذا أن كل قطع مكافئ يتشكل باستخدام خط المسح كدليل ونقطة الإدخال كبؤرة.

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

بما أن هناك O( n ) حدثًا للمعالجة (كل منها مرتبط بميزة معينة من مخطط فورونوي) و O(log n ) وقتًا لمعالجة حدث واحد (يتكون كل منها من عدد ثابت من عمليات شجرة البحث الثنائية وقائمة الانتظار ذات الأولوية) فإن إجمالي الوقت هو O( n log n ).

الشفرة الزائفة

وصف الخوارزمية باستخدام الشفرة الزائفة . [ 4 ]

يترك*(z){\displaystyle \scriptstyle *(z)}كن أنت التحول*(z)=(zx،zy+د(z)){\displaystyle \scriptstyle *(z)=(z_{x},z_{y}+d(z))}، أيند(z){\displaystyle \scriptstyle d(z)}هي المسافة الإقليدية بين z وأقرب موقع، ولتكن T هي "خط الشاطئ" .Rص{\displaystyle \scriptstyle R_{p}}لتكن المنطقة التي يغطيها الموقع p . جصq{\displaystyle \scriptstyle C_{pq}}ليكن شعاع الحدود بين الموقعين p و q . S{\displaystyle \scriptstyle S}لنفترض أن لدينا مجموعة من المواقع التي سيتم تطبيق هذه الخوارزمية عليها. ص1،ص2،...،صم{\displaystyle \scriptstyle p_{1},p_{2},...,p_{m}}لتكن المواقع المستخرجة من S ذات الإحداثي y الأدنى ، مرتبة حسب الإحداثي x . ولتكن DeleteMin( X ) عملية إزالة الموقع الأدنى والأيسر من X (يتم الترتيب حسب y إلا إذا كانا متطابقين، وفي هذه الحالة يتم الترتيب حسب x). ولتكن V خريطة فورونوي لـ S التي سيتم إنشاؤها بواسطة هذه الخوارزمية. سؤالص1،ص2،...،صم،S{\displaystyle Q\gets {p_{1},p_{2},\dots ,p_{m},S}}إنشاء أشعة حدودية رأسية أوليةجص1،ص20،جص2،ص30،...،جصم-1،صم0{\displaystyle \scriptstyle C_{p_{1},p_{2}}^{0},C_{p_{2},p_{3}}^{0},\dots ,C_{p_{m-1},p_{m}}^{0}}تي*(Rص1)،جص1،ص20،*(Rص2)،جص2،ص30،...،*(Rصم-1)،جصم-1،صم0،*(Rصم){\displaystyle T\gets *(R_{p_{1}}),C_{p_{1},p_{2}}^{0},*(R_{p_{2}}),C_{p_{2},p_{3}}^{0},\dots ,*(R_{p_{m-1}}),C_{p_{m-1},p_{m}}^{0},*(R_{p_{m}})}بينما لا تكون قائمة Q فارغة ، قم بتنفيذ ما يلي : p ← DeleteMin( Q ) في حالة p ، إذا كان p موقعًا في*(V){\displaystyle \scriptstyle *(V)}: ابحث عن وجود منطقة*(Rq){\displaystyle \scriptstyle *(R_{q})}في T التي تحتوي على p ، محصور بينجرq{\displaystyle \scriptstyle C_{rq}}على اليسار وجqs{\displaystyle \scriptstyle C_{qs}}على اليمين، أنشئ أشعة حدودية جديدةجصq-{\displaystyle \scriptstyle C_{pq}^{-}}وجصq+{\displaystyle \scriptstyle C_{pq}^{+}} مع استبدال القواعد p*(Rq){\displaystyle \scriptstyle *(R_{q})}مع*(Rq)،جصq-،*(Rص)،جصq+،*(Rq){\displaystyle \scriptstyle *(R_{q}),C_{pq}^{-},*(R_{p}),C_{pq}^{+},*(R_{q})}في احذف من Q أي تقاطع بينجرq{\displaystyle \scriptstyle C_{rq}}وجqs{\displaystyle \scriptstyle C_{qs}}أدخل في Q أي تقاطع بينجرq{\displaystyle \scriptstyle C_{rq}}وجصq-{\displaystyle \scriptstyle C_{pq}^{-}}أدخل في Q أي تقاطع بينجصq+{\displaystyle \scriptstyle C_{pq}^{+}}وجqs{\displaystyle \scriptstyle C_{qs}}p هو رأس فورونوي في*(V){\displaystyle \scriptstyle *(V)}ليكن p هو تقاطعجqر{\displaystyle \scriptstyle C_{qr}}على اليسار وجرs{\displaystyle \scriptstyle C_{rs}}على اليمين يسارجuq{\displaystyle \scriptstyle C_{uq}}كن الجار الأيسر لـجqر{\displaystyle \scriptstyle C_{qr}}ودع جsv{\displaystyle \scriptstyle C_{sv}}كن الجار المناسب لـجرs{\displaystyle \scriptstyle C_{rs}}في T إذاqy=sy{\displaystyle \scriptstyle q_{y}=s_{y}}أنشئ شعاعًا حدوديًا جديدًاجqs0{\displaystyle \scriptstyle C_{qs}^{0}}أما إذا كان p يقع على يمين القيمة الأعلى بين q و s ، فأنشئجqs+{\displaystyle \scriptstyle C_{qs}^{+}}وإلا قم بإنشاءجqs-{\displaystyle \scriptstyle C_{qs}^{-}}endif استبدالجqر،*(Rر)،جرs{\displaystyle \scriptstyle C_{qr},*(R_{r}),C_{rs}}مع إنشاء جديدجqs{\displaystyle \scriptstyle C_{qs}}في احذف من Q أي تقاطع بينجuq{\displaystyle \scriptstyle C_{uq}}وجqر{\displaystyle \scriptstyle C_{qr}}احذف من Q أي تقاطع بينجرs{\displaystyle \scriptstyle C_{rs}}وجsv{\displaystyle \scriptstyle C_{sv}}أدخل في Q أي تقاطع بينجuq{\displaystyle \scriptstyle C_{uq}}وجqs{\displaystyle \scriptstyle C_{qs}}أدخل في Q أي تقاطع بينجqs{\displaystyle \scriptstyle C_{qs}}وجsv{\displaystyle \scriptstyle C_{sv}} سجل p كأعلى قمةجqر{\displaystyle \scriptstyle C_{qr}}وجرs{\displaystyle \scriptstyle C_{rs}}وقاعدةجqs{\displaystyle \scriptstyle C_{qs}} إخراج أجزاء الحدودجqر{\displaystyle \scriptstyle C_{qr}}وجرs{\displaystyle \scriptstyle C_{rs}}endcase endwhile قم بإخراج أشعة الحدود المتبقية في T

المواقع والأقراص الموزونة

المواقع الموزونة بشكل تراكمي

كما يوضح فورتشن في المرجع [ 1 يمكن استخدام نسخة معدلة من خوارزمية خط المسح لإنشاء مخطط فورونوي مرجح جمعيًا ، حيث يتم تعويض المسافة إلى كل موقع بوزن ذلك الموقع؛ ويمكن اعتبار هذا المخطط بمثابة مخطط فورونوي لمجموعة من الأقراص، متمركزة عند المواقع بنصف قطر يساوي وزن الموقع. وقد وُجد أن الخوارزمية تتمتع بـيا(نسجل(ن)){\displaystyle O(n\log(n))}التعقيد الزمني حيث n هو عدد المواقع وفقًا للمرجع [ 1 ]

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

مراجع

  1. 1 2 3 دي بيرج, مارك ; فان كريفيلد, مارك ; أوفرمارس, مارك ; شوارزكوف ، أوتفريد (2000)، الهندسة الحسابية (الطبعة الثانية المنقحة  Springer-Verlag ، ISBN 3-540-65620-0القسم 7.2: حساب مخطط فورونوي: الصفحات 151 - 160.
  2. أوستن، ديفيد، مخططات فورونوي ويوم على الشاطئ ، عمود مميز، الجمعية الرياضية الأمريكية.
  3. ستيفن فورتشن. خوارزمية خط المسح لمخططات فورونوي. وقائع الندوة السنوية الثانية حول الهندسة الحسابية . يوركتاون هايتس، نيويورك، الولايات المتحدة، الصفحات 313-322 . 1986. ISBN 0-89791-194-6مكتبة ACM الرقمية SpringerLink
  4. كيني وونغ، هاوسي أ. مولر ، تطبيق فعال لخوارزمية مسح المستوى لفورتشن لمخططات فورونوي ، CiteSeerX 10.1.1.83.5571 .