الانتقال إلى المحتوى الرئيسي

كيفية التحقق من الدورات في الرسم البياني بلغة البرمجة سي

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

في ال لغة البرمجة ج ، هناك عدة طرق للتحقق من الدورات في الرسم البياني. واحدة من الطرق الأكثر شيوعا هي طريقة عبور الرسم البياني في العمق (دفس — عمق البحث الأول). عند استخدام هذه الطريقة ، يتم إجراء بحث عن العمق أولا على كل رأس من الرسم البياني ، وإذا تم العثور على حافة تؤدي إلى رأس تمت زيارته بالفعل أثناء العبور ، فإن الرسم البياني يحتوي على دورة.

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

  1. سؤال وجواب
  2. كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة "ج"?
  3. كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة " ج " باستخدام خوارزمية اجتياز الرسم البياني في العمق?
  4. كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة ج باستخدام خوارزمية الفرز الطوبولوجي?

سؤال وجواب

كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة ج?

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

كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة " ج " باستخدام خوارزمية اجتياز الرسم البياني في العمق?

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

كيف يمكنني التحقق من وجود دورات في الرسم البياني في لغة البرمجة ج باستخدام خوارزمية الفرز الطوبولوجي?