منتدى طلبة كلية الهندسه بأسوان
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى طلبة كلية الهندسه بأسوان

منتدى طلبة كلية الهندسه بأسوان
 
الرئيسيةالتسجيلأحدث الصوردخول

 

 أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا

اذهب الى الأسفل 
كاتب الموضوعرسالة
YeHi@$MmZ
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
YeHi@$MmZ


عدد المساهمات : 5020
تاريخ التسجيل : 25/06/2007
العمر : 37
الموقع : سرى
رقم العضوية : 10
Upload Photos : أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Upload

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Empty
مُساهمةموضوع: أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا   أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا I_icon_minitimeالجمعة 24 يوليو - 23:27

في هذا الدرس إن شاء الله سنتناول من أهم المفاهيم المستعملة في علوم البرمجيات وهي خوارزمية أقصر الطرق

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

مثال أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233933348

في هذا الشكل نرى هناك 5 عقد والدوائر التي وضعتها على رؤوس الأسهم لتبين ان الجراف موجه
إذن كيف سنعرف أقصر مسافة بين العقدة A والعقد D و C
سأشرح الخوارزمية مع المثال
في الشكل أعلاه نريد حساب أقرب مسافة بين A وD و C
سأضع جدول يشرح حالة الجراف في حالته البدئية
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233933181

في الجدول نرى ان العقدة A فيها 0 لأنها العقدة التي فيها أقصر مسافة وتحت الصفر نلاحظ وجود نقطة سوداء كبيرة للدلالة على ان هذه العقدة هي التي سننطلق منها للعقد لآخرى لأنها تحتوي على أقل رقم .
رمز الانهاية للدلالة على اننا لا نعرف المسافة الفاصلة بين العقدة A والعقد الأخرى

ننطلق من العقدة A
العقدة A إلى أي من العقد تصب إنها تصب في العقدتين B و E
نرى ان المسافة التي بين العقدة A و B هي : 10
والمسافة التي بين العقدة A و E هي : 5

في هذه الصورة وضحت المسارين بلون مختلف

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233933701

إذن أقصر المسافة بين العقدتين هي : 5

هذا الجدول يبين ذلك

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233933786

نلاحظ في الجدول أننا وضعنا الرقم 10 تحت العقدة B وبالقرب من 10 وضعنا الحرف A ليدل على أن المسار آت من العقدة A
وتحت العقدة E وضعنا الرقم 5 بإطار لنبين ان الرقم 5 هو المسار الأقصر من العقدة A وبين العقدتين B و E

بما اننا وجدنا ان العق دة E فيها أقل رثم نبدا منها لهذا في الجدول الأخير وتحت الرقم 5 وضعت نقط سوداء للدلالة على اننا سوف نبدأ منها
إذن نذهب إلى العقدة E
نرى ان العقدة E تؤدي إلى كل من العقد B و C و D
لنرى الصورة التبيانية لحالة العقد
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233934423

نرى ان العقدة B تحتوي على الرقم 8 والعقدة C تحتوي على الرقم 14 والعقدة D تحتوي على الرقم 7
من أين اتت هذه الارقام
لنحلل الشكل
قلنا أن أقل رقم بين العقدة A والعقدتين B و E هو 5
والمسافة التي بين العقدة E والعقدة B هي 3 كما في الشكل إذن وبالتالي تكون المسافة بين العقدة A وB هي 8 إذن أقصر مسار للوصول إلى العقدة B هي بالمرور على العقدة E ثم الوصول إلى العقدة B لأن المسافة بالمرور على العقدة E ومن ثم الوصول للعقدة B هي 8
أما من العقدة A إلى B مباشرة فهي 10
كذلك الأمر بالنسبة للعقدة C أي نضيف 5 على المسافة التي بين العقدة E و العقدة C فتصبح 14
وكذلك بالنسبة للعقدة D فتصبح 7
نضع جدول بين الأمر
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233934905
من خلال الجدول نرى أن 7 هو أقل رقم الآت من العقدة E
الحين ننطلق من العقدة D
لأنه ومن خلال الجدول نرى ان العقدة D في أقل رقم من العقد الاخرى الذي هو الرقم 7
العقدة D تؤدي فقط إلى العقدة C
إذن تصبح العقدة C تساوي 7+6=13
نلاحظ ان العقدة D لا توصل للعقدة B إذن العقدة B تبقى تساوي 8
نلاحظ الصورة للحالة الجديدة
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233935388

الجدول لتحليل الصورة
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233935472

إذن نلاحظ في الجدول ان العقدة B تحتوي على أقل رقم الآت من العقدة E

ونلاجظ ان العقدة B تعطي للعقدة C إذن
نقوم بإظافة 8 على المسافة التي بين العقدة B و C فتصبح العقدة C تساوي 9
إذن خلاصة الامر للوصول إلى العقدة C من أقصر الطرق نسلك العقدة E ومن ثم العقدة B وأخيرا نصل إلى العقدة العقدة الهدف C
وللوصول إلى العقدة D من أقصر الطرق نسلك العقدة E ونصل إلى العقدة D

اترككم مع الصورة النهائية

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233935853

والجدول التوضيحي
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Post-51778-1233935872

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

الرجوع الى أعلى الصفحة اذهب الى الأسفل
YeHi@$MmZ
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
مراقب عام منتدى أقسام الكليه ومشرف قسمى حاسبات وكورسات هندسيه
YeHi@$MmZ


عدد المساهمات : 5020
تاريخ التسجيل : 25/06/2007
العمر : 37
الموقع : سرى
رقم العضوية : 10
Upload Photos : أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Upload

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Empty
مُساهمةموضوع: رد: أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا   أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا I_icon_minitimeالأحد 26 يوليو - 1:58

هذا كود بسيط بالسي ++ حول خوارزمية ديجيكسترا .

أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا Cppcode
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
أقصر الطرق من النقطة A إلى النقطة B, نظرة على خوارزمية ديجيكسترا
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى طلبة كلية الهندسه بأسوان :: هندسة الحاسبات والنظم :: البرمجة Programming-
انتقل الى: