المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات...

Preview:

DESCRIPTION

المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات 1289. اعداد د. محمد ذويـب. أهداف المادة العلمية. تعريف مفهوم المخططات والشبكات وتميز بينهما. تمثل المخططات والشبكات بطرق مختلفة. تستطيع استخدام خوارزمية Dijkstra لإيجاد اقصر ممر بين زوجين من العناصر. - PowerPoint PPT Presentation

Citation preview

المخططات والشبكات

Graphs & Networks

لمقرر تركيب البيانات وتصميم 1289الخوارزميات اعداد

د. محمد ذويـب

تعريف مفهوم المخططات 1.والشبكات وتميز بينهما.

تمثل المخططات والشبكات بطرق 2.مختلفة.

تستطيع استخدام خوارزمية 3.Dijkstra إليجاد

اقصر ممر بين زوجين من العناصر. Floyedتستطيع استخدام خوارزمية 4.

إليجاداقصرممر بين زوجين من العناصر.

أهداف المادة العلمية

الشبكـاتNETWORK

المخططـات GRAPHSKS

هي تراكيب بيانات تشبه الهياكل الشجرية

في التمثيل الرياضي حيث تمثل الهياكل الشجرية نوع من أنواع

المخططات

(Graphs)اوال:المخططات

تعريف المخططات

أما في برمجة الحاسوب فان المخطـطات

تستعمل بطريقة تختلف عن الهياكل الشجرية

وما يميزهاقلة القيود عليها

مقارنة بالهياكل الشجريةومن الممكن للعناصر

أن تؤشر الى بعضها

ليس هناك عالقة أبوة وأبناء في المخططات

فالمخططات في اغلب األحيان لها شكل موحد

لتمثيل مشكلة طبيعية فمثال يمكن ان تمثل مجموعة الرؤوس

في المخطط المدن بينما الحواف الطريق الواصلة يمكن ان تمثل

بين هذه المدن

بمعنى آخر

فان المخطط ال يعكس المواقع الجغرافيةبل يعكس واقع العالقات بين المواقع

والممثلة (Vertices)في القمـم

(Edges)والطرق الواصلة بينها

ويمكن أن تمثل الحواف في بعض االحيان على شكل

أقواس باإلضافة الى الخطوط المستقيمة

وعلى اي حـال

تتكون المخططات من جزئيين : رئيسين هما

( Element)العناصر مجموعة من 1.

وتسمى الرؤوس (Node)او العقد V

(Vertices)

)E )edgeمجموعة الحواف 2.

وبناء عليه فان المخطط يشار اليه كما يلي:

G=)V,E(

.1

انـواع المخططات

Graphs Type

المخططات الغير متجهة (UNDIRECTED GRAPHS)

المخططات المتجهة (DIGRAPH )

يوجد نوعان رئيسيان من المخططات هي:

متجهةالمخططات الغير (UNDIRECTED GRAPHS )

يكون المخطط غير متجه عندما تكون كل حافة تصل بين زوج

من القمم الغير مرتبة

:اوال

وكذلك إذا لم تحدد الحواف التي تربط بين رؤوس المخطط باتجاه معين

(v1,v2)تكون القمة

(v2,v1) مكافئة للقمة

وفي هذه الحالة:

v2

v3 v5

v4

v1

المخططات المتجهة(DIGRAPHS )

المخطط يسمى متجه إذا كانت كل حافةفي المخطط تربط بين زوج

مرتب من القمم ويكون هناك على األقل ممرواحد

من كل قمةالى قمةأخرى ومحددا بسهم يشير الى تلك القمة

ثانيا:

v1 v2

v3 v4 v5

v6 v7

تمثيل المخططاتRepresentation of Graphs

Linked)القوائم المتصلة 1.Representation)

Adjacency)مصفوفة الجوار 2.Matrices)

هناك عدة طرق لتمثيل المخططات منها:

Linked) المتصلةالقوائم

Representation)تعتبر من ابسط الطرق إستخدامافإستعراض المخطط يتضمن زيارة كل قمة في المخطط مرة واحدة

فالخوارزميات التي تطبق فقط في الهياكل الشجرية ال يمكن أن

تطبق هنا الن المخطط قد يحتوي على دوران

: اوال

لذلك خوارزمية االستعراض الشجري من الممكن أن تؤدي الى تكرار ال

نهائي

لمنع ذلك من الحدوث كل رأس تمت زيارته يمكن أن

يسجل لتجنب زيارته مرة أخرى

مع ذلك من الممكن أن تحتوي المخططات

(متصلة غير)على قمم معزولةمما يعني أن بعض أجزاءالمخطط

من الممكن أن تحذف إذا تم تطبيق منهج

االستعراض الشجري

:مثـال

1

2 4

3

مثل المخطط التالي باستخدام مؤشرات الربط

الحـل:

قائمة العناصر1.

قائمة الحـواف2.

يتم تمثيل المخطط كي يشمل قائمتين:

2

1

1

1

NULL

NULL

NULL

NULL

قائمةقائمــة الحوافالعناصر

3

3

2

2

4

4

4

3

1

2

3

4

( Adjacency Matrices) مصفوفة الجوار

هي عبارة عن مصفوفة ثنائية األبعاد التي تحددجميع القمم المجاورة

لكل قمة في المخططهي مصفوفة )A)aijفمصفوفة الجوار

من الحجم n x n حيث يوضع في الموقعaij

قيمة الوزن

: ثانيا

aij := 1 if there is an edge from i to j 0 if there is no edge

اذا كان هناك حافة j الى القمة iمن القمة

اذا لم يكن هناك حافة 0ويوضع تربط بين الرأسين

وبشكل عام العالقة التالية تمثل

:مصفوفة الجوار

مثـال :

مثل الشكل التالي باستخدام مصفوفة الجوار

v1

v7v6

v4 v5v3

v2

يمكن تمثيل المخطط السابق :بمصفوفة الجوار التالية

:الحـل

نالحظ ان مصفوفة الجوار تحتوي دائما

1 و 0 على العنصرين

ولهذا السبب ¡ة يطلق عليها المصفوفة البولي

حساب الحواف الداخلة والخارجة من كل قمـة

في المخطط باستخدام مصفوفة الجوار

كدليل nنستعمل رقم العنصر للعمود

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

في مصفوفة الجوار1الرقم

لحساب عدد الحواف الداخلة:

كدليل nحيث نستخدم رقم العقدة الصف

في مصفوفة الجوار ونحسب عدد مرات حصول

في ذلك الصف ويمثـل 1 الرقم عدد مرات

عدد الحواف 1 حصول الرقم الخارجة من كل

عقدة في المخطط.

وبنفس الطريقة لحساب الحواف الخارجة:

لحساب الحواف الداخلة والخارجة من والى كل

عنصر في المخطط باستخدام تمثيل مصفوفة

الجوار نكتب الدوال التالية:

: مثـال

buildadjm)intadj[][MAX], int n(

void buildadjm)int adj[][MAX], int n({ int i,j; for)i=0;i<n;i++( for)j=0;j<n;j++(

{ cout<<"Enter 1 if there is an edge from "<< i <<" “

<< "to" <<" "<< j <<" otherwise enter 0 "<<endl;

cin>>adj[i][j]; } }

:حل المثال

ثم نبني الدالةindegree

حيث تحسب عدد مرات ظهور 1الرقم

في كل عمود في مصفوفة الجوار باستخدام

رقم العقدة التي سيتم حساب الحـواف الداخلة لها والذي يمثل

دليل المصفوفة

Int indegree )intadj[][MAX],intx,int n(

{ int i, count =0; for)i=0;i<n;i++(

if) adj[i][x] ==1( count++;

return)count(; }

وهي كالتالي:

ثم نبني الدالةoutdegree

حيث تحسب عدد مرات ظهورفي كل صف من مصفوفة 1 الرقم

الجوار باستعمال رقم العقدة (الرأس)

لها عدد الحواف التي ستحسب

حل المثال :

int outdegree)int adj[][MAX],int x,int n(

{ int i, count =0; for)i=0;i<n;i++( if) adj[x][i] ==1( count++; return)count(; }

:وهي كالتالي

void main)( { int adj[MAX][MAX], n, i; cout<<"Enter the number of nodes in

graph maximum = “ <<MAX<<endl;

cin>>n;

حل المثال:

البرنامج الرئيسي وهنا يكونكالتالي :

buildadjm)adj,n(;

for)i=0;i<n;i++({ cout<<"The indegree

of the node "<<i<<" is” <<indegree)adj,i,n(<<endl;

cout<<"The outdegree of the

node“<<i<<"is”<<outdegree)adj,i,n(<< endl; } }

شرح البرنامج:

يقوم هذا البرنامج أوال ببناء 1.مصفوفة الجوار

من خالل مناداة بعد buildadjmالدالة

ذلك يدخل في حلقة التكرار الداخلة والخارجة لحسـاب الحواف

لكل عقدة في المخطط مناداة الدوال........... من خالل

indegreeوoutdegree.على التوالي

تحسب عدد indegreeالدالة2.مرات

في كل عمود 1 ظهور الرقم في مصفوفة

الجوار بإستخدام رقم العقدة الـتي

سيتم حساب الحواف الداخلة لها والذي

يمثل دليل المصفوفة.

تحسب عددoutdegreeالدالة3.في 1 مرات ظهور الرقم

كل صف من مصفوفة الجوار

بإستعمال رقم العقدة التي ستحسب لها

عدد الحواف.

لشبكاتا NETWORKS

تعرف الشبكة على انها مخطط يتكون من نقطة Diagramهندسي

متصالت فيما F ونقطة نهاية A بدايةبينهما بمجموعة متتابعة من العقد

Nods Edges متصلة معا بعدد من الحواف

ثانيا:

كل حافة تصل بين نقطتين او )( اكثر

ولكل حافة من حوافه قيمة عددية موجبة

تمثل وزن تلك الحافة

طرق ايجاد اقصر الممرات

SHORTEST PATH

ان ايجاد اقصر الممرات في المخطط الشبكي

يعتمد على وجود ممر بين كل قيمتين في المخطط بحيث يكون مجموع اوزان الحواف هو االقل

:فمثالإليجاد الطريق األسرع للوصول من

موقع الى آخر في مخطط الطرق

بين اقصر الممرات نعمل على ايجاد هذه المواقع

من خالل فحص جميع الطرق المؤدية الى الموقع المطلوب

بداية من نقطة االنطالق ونهــاية الى الوجهة المقصودة

ستخدم إليجاد اقصر الممرات نوطريقتيناحدى ال :

االولى :الطريقة 1.باستخدام خوارزمية

(Dijkstra) ديجكسترا

:ةالثانيالطريقة 2.)باستخدام خوارزمية فلويد

Floyd)

االولى :الطريقة •

باستخدام خوارزمية ديجكسترا Dijkstra هناك العديد من الخوارزميات

إليجاد المسافة من قمة الى اخرى في المخطط

حيث تقوم Dijkstraمنها خوارزمية هذه الخوارزمية على تحديد المسافة

من قمة محددة وجميع القمم االخرى في المخطط

من قمة Dijkstraتبدأ خوارزمية معينة

في ( source) تسمى نقطة المصدرالمخطط الشبكي وتمتد حتى تصل

الى جميع القمم االخرى في المخطط وتقوم على تخزين

المسافة الكلية من القمة المصدرية

الى القمة المراد الوصول اليها

وللتوضيح اكثر

على تخزين Dijkstraتعمل خوارزمية مجموع اقل تكلفة للحواف من

نقطة البداية الى نقطة النهاية ومن الجدير بالذكر

ان كفاءة هذه الخوارزمية هو O)n2(

مصفوفة تكلفة الجوار(Adjacency Matrix Cost)

مصفوفة الطول ( Distance Matrix)

مصفوفة التخزين(Path Matrix )

مصفوفة العناصر(Include Matrix)

تحتاج هذه الخوارزمية الى اربع مصفوفات وهي :

المصفوفة األولى:

مصفوفة تكلفة الجوار (Adjacency Matrix Cost )

في الشكل التاليةل الشبكــ يظهر شك

DC

A B

الشكل السابق تمثيل يمكن باستخدام مصفوفة

كما يلي: الجوار   A B C D

A 0 A TO B A TO C A TO D

B 0 0 B TO C B TO D

C 0 0 0 C TO D

D 0 0 D TO C 0

+C المصفوفة بلغة ويتم االعالن عن

:كالتالي + int COST[N][N] ;

المصفوفة الثانية: مصفوفة الطول

(Distance Matrix )

لتخزين طول اقصر الطرق من نقطه االنطالق

وذلك في الموقع Jالى النقطه [ DISTANCE[J

+C المصفوفة بلغة ويتم االعالن عن

:كالتالي + int DISTANCE[N][N];

المصفوفة الثالثة:مصفوفة التخزين (Path Matrix)

مر بها في تلتخزين العناصر التي اقصر الممرات

ةيحتوي على النقط path[ j ]حيث ان في اقصر j ة المباشره لنقطةالسابق

الممرات+C المصفوفة بلغة ويتم االعالن عن

:كالتالي + int PATH[N];

المصفوفة الرابعة:مصفوفة العناصر

(Include Matrix)

ه منطقيه¡وهي مصفوفة بولي تحتوي على العناصر المشمولة ،

(االنطالق) االصل ةبما في ذلك نقطالممرات لغاية هذه ضمن اقصر

االلحظه من تطبيق الخوارزمية بدءمن نقطة االنطالق

ففي حالة شمول أي من النقاط قبل j

Includedضمن اقصر الممرات

True تساوي

+C المصفوفة بلغة ويتم االعالن عن

:كالتالي + bool INCLUDE[N];

وصف خوارزمية ديجكسترا إليجاد ; Const int N=50 اقصر الممرات

Typedef bool Boolean Type [N] ;Int cost [N][N] ;Int DISTANCE [N] ;Int PATH [N] ;Bool INCLUDE [N] ;Void SHORTPATH ) int SOURCE (;Boolean Type Included;Int I , j ; ReadMat )(;

Initialize ) SOURCE ( ;Do { FINDMIN )J( ; INCLUDE[J] = true ; For )i=0;i<N ;i++( If ) ! INCLUDED[J] ( UPDATE ) I,

J ( ; PRINT )( ; } While ALL) Included ( ; PrintPath )( ; }

الدوال المستخدمه في خوارزمية ديجكسترا

: ReadMAT الداله1.حيث يتم عن طريق هذه الداله قراءة مصفوفة اوزان الجوار

اوال:أي من والى ( Vi ,Vi) اذا كانت الحافه

.ةالنقطثانيا:

. ة اذا لم توجد حاف

اوال:أي من والى ( Vi ,Vi) اذا كانت الحافه

.ةالنقطثانيا:

. ة اذا لم توجد حاف

وعند ادخال مثل هذه القيم يجب ادخال القيمه

في حالتين هما : 0

: Initialize دالة2.

تحديد القيم ةحيث يتم في هذه الدالاالبتدائية

INCLUDE [ SOURCE] تحدد في البداية لكلtrue INCLUDE [i] على انها تساوي

false النقاط المتبقية تساوي

:FINDMIN الداله 3.داله تعيد اقصر الممرات من وهي

نقطة البداية J الى النقطه

ضمن اقصر Jوبذلك تصبح النقطه الممرات

Included [j]حيث يتم تعديل قيمة

trueلتصبح مساوية للقيمة

ولتحديد ذلك يتم فحص ابعاد جميع الممرات

jمن نقطة البداية الى نقطة وفةـوهذه االبعاد تخزن في المصف

Distance Matrix

:UPDATE الداله 4. Distance تستخدم لتعديل المصفوفة

Matrix في حالة ايجاد Path Matrixوالمصفوفة

نقطة مثلi حيث ان (INCLUDE [i]= false)

تعطي ممر طوله اقصر الممرات الموجودة

قبل اعتبار هذه النقطه

وفي هذه الحاله تضاف هذه النقطه الى النقاط

المشمولة في اقصر الممرات

: ALLالداله 5. و تستخدم كداله منطقيه

عندما تصبح قيم trueو تعيد القيمه جميع

Include Matrix المواقع في المصفوفة trueتساوي

خالف false وتعيد هذه الداله القيمه ذلك

: SHORT PATHالداله 6. وتستخدم كداله يتم من داخلها

استدعاء الدوال السابقه باالضافه الى دالة الطباعه التي

تقوم بطباعةالنتائج وأي معلومات اخرى نرغب

فيها وفي نهاية هذه الداله يتم طباعة اقصر الممرات وتكلفة هذا

الممر

: PRINTدالة الطباعه 7. تستخدم هذه الدالهاتــ لطباعة قيم المصفوف

DISTANSE , INCLUDE , PATH

بعد كل خطوه من خطوات الخوارزميه

: PRINTPATH الداله 8. يستخدم هذا االجراء

لطباعة اقصر الممرات بين نقطة المصدر

ونقطة الوجهه المقصوده

إليجاد اقصر الممرات بين نقطتينباستخدام خوارزمية ديجكسترا

باستخدام مصفوفة تكلفة الجوار الموضحه

التاليفي الشكل نجد اقصر الممراتوف س

3الى النقطه1 من النقطه

  1 2 3 4 5

1 0 800 2985 310 200

2 800 0 410 612 0

3 2985 410 0 1421 0

4 310 612 1421 0 400

5 200 0 0 400 0

: توضيحات

اذا لم تكن هناك حافة من النقطه(أ)فان قيمة الموقع ( ب)الى النقطه

تساوي بوالعمود أفي الصف ما النهاية .

عند بدء البرنامج فان الدالهInitialize

تعمل على تحويل االصفار الناتجة عن عدم

وجود حواف بين النقاط في المخطط الى اكبر

++Cقيمه صحيحة ممكنه في لغة

ويرمز الىوهو MAXINTبالرمز هذه القيمه

يساوي 32767.

حل المثال :

تبدأ خوارزمية ديجكسترا بقراءة قيم مصفوفة

الجوار ، ويتم تخزين تلك القيم في فعلى سبيل المثالcostالمصفوفة

وهذا 410 ةالقيم cost [2,3] تساوي يعني

ان وزن الحافه التي تصل بين النقطتين

410 هو 3 و 2

بعد ذلك يتم استدعاء االجراء

initialize والذي يحدد القيم االبتدائية

للمصفوفاتDistance و Path و Included

كما يلي

اوال: كما DISTANCE محتويات المصفوفة

يلي :

من نقطة البداية وهي 1بعد النقطه النقطه نفسها

يساوي صفر DISTANCE [ 1 ]أي

من نقطة البداية 2بعد النقطه 800يساوي DISTANCE [ 2 ]أي

من نقطة البداية3بعد النقطه 2985 يساوي DISTANCE [ 3 ]أي

من نقطة البداية 4بعد النقطه 310 يساوي DISTANCE [ 4 ]أي

من نقطة البداية 5بعد النقطه 200 يساوي DISTANCE [ 5 ]أي

وبذلك : كما يلي :DISTANCEتكون المصفوفة

Distance : 0 800 2985 310 200

: ثانياPATHمحتويات المصفوفة

فهي قيمة نقطة البداية في حال نقطة وجود حافة او ممرمن

البداية الى النقاط االخرى . PATHولهذا تكون محتويات المصفوفة

(أي نقطة البداية)1مساوية للقيمة

حيث تساوي قيمته PATH[1]باستثناء صفرا .

Path: 0 1 1 1 1

:ثالثاINCLUDEمحتويات المصفوفة

falseفان قيم جميع عناصرها تساوي

INCLUDE [ 1 ]باستثناء قيمة العنصر

تمثل نقطة 1حيث ان القيمه البدايةوالتي

وهذا يعني ان النقطه true تساوي 1

ان تشمل في اقصر ينبغيالممرات .

وبذلك نحصل على القيم االبتدائية للمصفوفات

DISTANCE وINCLUDE و PATH

كما يلي :النقطه 1 2 3 4 5Distance 0 800 2985 310 200

Path 0 1 1 1 1Include true false false false false

وفي المرحلة التالية من تنفيذ الخوارزمية

يتم تعديل محتويات المصفوفات الثالث

بحيث تعكس تلك التعديالت ابعاد اقصر الممرات

من نقطة البداية كما تبين هذه التعديالت النقاط

التي تم اخذها بعين االعتبار والنقاط المشمولة

في اقصر الممرات

لذلك يتم في الخطوة الثانيه من

الخوارزميه إجراء التعديالت التالية من النقطه 5فبما ان بعد النقطه على المصفوفات الثالث

هو االقل من ابعاد النقاط االخرى 1 ينبغي ان تكون ضمن5فان النقطه

اقصر الممرات

مساوية INCLUDE [5]وبذلك تصبح للقيمة

true بوصفها النقطه 1 وتبقى النقطه التي يمكن المرور بها حتى هذه

اللحظه من الخوارزميه

وتبقى انطالقا من نقطة البداية مباشرة الى النقاط (1وهي النقطه)

االخرى كما تبقى محتويات كما هي PATHالمصفوفة

وعليه تكون محتويات المصفوفة الثالث بالنسبة

كما يلي :5 الى النقطة

النقطه 1 2 3 4 5Distance 200 1000 1821 400 0

Path 5 1 4 5 0Include true false false true true

نأخذ الطريق الغير مباشر من من خالل 3 الى النقطة 5النقطة 2النقطة

النقطه 1 2 3 4 5Distance 200 1000 1410 400 0

Path 5 1 2 5 0Include true true false true true

فتصبح كما يلي:

النقطه 1 2 3 4 5Distance 200 1000 1410 400 0

Path 5 1 2 5 0Include true true true true true

التوضيح :

لتوضيح معنى 2 لو أخذنا النقطه القيم الموجودة

في المصفوفات الثالث

نالحظ ان محتويات الموقع الثاني , false , 1)في المصفوفات الثالث هي

وهذا يعني ان طول اقصر (800 2 الى النقطه 1الممرات من النقطه

800حتى هذه اللحظه هو

ان النقطه التي 1كما تعني القيمه 2تم استخدامها للوصول الى النقطه

1هي النقطه

لم 2 ان النقطه falseوتعني القيمه

تؤخذ بعين االعتبار لتحديد اقصر الممرات

حتى هذه اللحظه

الخطوه التاليه 3يمكن الوصول الى النقطه

مباشرة وتكلفة هذا 1 إما من النقطه2985 الممر

وتكلفة هذا 2او عن طريق النقطه 800 الممر

او عن طريق النقطه1من النقطه 4

وتكلفة الوصول في هذه الحاله 310هي

800 اصغر من 310وبما ان

ضمن اقصر 4لذلك شمول النقطه الممرات

وعليه تصبح قيمة DISTANCE [ 3]

تساوي ( 310+1421 = 1731 )

PATH [ 4 ]كما تصبح محتويات = 1

3 أي ان الوصول الى النقطه 4عن طريق النقطه

أي ان PATH [ 4] = 1 وبما ان 4الوصول الى

(نقطة البداية ) 1عن طريق النقطه

4وبما انه وتم اختيار النقطة 3للوصول الى النقطه

وتصبح محتويات العنصر الرابع للمصفوفة

INCLUDE

مساوية للقيمة true

أي ان محتويات المصفوفات الثالث كما يلي

النقطه 1 2 3 4 5

Distance 0 800 1731 310 200

Path 0 1 4 1 1

Include true false false true true

وبما ان بعض قيم المصفوفة INCLUDE

غير مأخوذة بعين االعتبار (falseوهو ما تشير اليه القيمه )

سوف يستمر تنفيذ الخوارزميه حتى تصبح جميع فيم عناصر تلك

المصفوفة trueمساوية للقيمة

¿ في الخطوه التاليه من إذاالخوارزميه

2 الى 1سنالحظ أن طول الممر من 3الى

1اصغر من طول الممر من النقطه 4الى

ونتيجة لذلك يصبح طول المسافة = 410+800يساوي 3 الى 1 من

1210

وهو اقل من الطول السابق للممر 3 ثم الى 4 الى 1من

ولذلك يتم إجراء التعديالت الالزمة على المصفوفات عن طريق اإلجراء

UPDATE

ومن ضمن تلك التعديالت

في هذه الخطوه

الى 4من PATH [3]تعديل يغير قيمه

2

الى 1731من DISTANCE[3] وتعديل

1210

INCLUDE [2]وتعديل قيمة

true الى falseمن

قد اخذت 2مما يعني ان النقطه

بعين االعتبار

وعليه تصبح محتويات المصفوفات

الثالث

النقطه 1 2 3 4 5

Distance 0 800 1210 310 200

Path 0 1 2 1 1

Include true true true false true

ومن المصفوفة األخيرة نجد أقصر الممرات

أي ) 3وذلك بالنظر الى النقطه (نقطة النهاية

PATH [ 3 ] =2حيث نالحظ ان

2 تم من 3أي ان الوصول الى

2 اما عن كيفية الوصول الى

PATH ألن 1فمن الواضح انه تم عبر

[ 2 ] = 1

هي نقطة البداية فان 1وبما أن اقصر الممرات

3 الى 2 الى 1 هو ولمعرفة طـول هذا الممر

DISTANCE نستخدم المصفوفة

القيمه DISTANCE [ 3 ]فتعطينا (1210)

وهي طول الممر

النقطه 1 2 3 4 5

Distance 0 800 1210 310 200

Path 0 1 2 1 1

Include true true true true true

لتوضيح المثالنقوم برسم المخطط لمصفوفة

تكلفة الجوار

1 2

4 5

2985

410800

400

1421

310612

200

3

1210= 410+800 3 2 1

2985= 3 1

3233= 1421+612+800 3 4 2 1

1731= 1421+310 3 4 1

2021= 1421+400+200 3 4 5 1

1622= 410+612+400+200 3 2 4 5 1

1332= 410+612+310 3 2 4 1

ثانيا : 1نقوم بحساب اقصر المرات بين النقطه

االحتماالت :3و النقطه

لتوضيح المثال

وبعد حساب اوزان جميع االحتماالت يتضح ان 3 و النقطة 1 بين النقطة

الممر الى 2 الى النقطة 1 من النقطة

3النقطة هو أقصر الممرات مقارنة مع نتائج

باقي الممرات وهي نفس النتيجة في حل المثال

بالطريقتين1 2 3 = 800 + 410 = 1210

الطريقة الثانية :

تعد خوارزمية فلويد تعديال على حيث تقوم هذه Dijkstraخوارزمية

الخوارزمية على حساب مصفوفة اقصر الممرات بين نقطتين

مختلفتين في المخطط الشبكي

Floyd خوارزمية فلويد

من خالل مقارنة جميع قيم العمود األول

والصف االولفي مصفوفة المسافة ومقارنة

مجموع القيم المؤشر عليها مع بقية القيم االخرى

في نفس الصف والعمود في المصفوفة

اذا كان المجموع اقل من القيمة

المؤشر عليها نغير القيمة بقيمة المجموع المقابل لها في نفس الصف والعمود كفاءة

)O)n3هذه الخوارزمية هو

تحتاج هذه الخوارزمية الى ثالث

مصفوفات وهي :

مصفوفة تكلفة الجوار(Adjacency Matrix

Cost)

تم شرحها سابقا.

مصفوفة التخزين(Path Matrix)

على القيم ةتحتوي هذه المصفوف الممر العدديه لتكلفة

بأقصر الممرات ما بين ةوالمشمولنقطتين

I وJ ويشار الى ذلك بPATH [I][J]

مصفوفةP في بداية ةيتم تهيئة المصفوف

الخوارزمية كما يلي مساوية للصفر COST [I][J]اذا لم تكن COST[I][J]=P[I][J]و

( أي عناصر القطر ) J=Iاذا كانت صفرتساوي

او ما ال MAXINTخرى أوفي الحاالت النهاية

ونجد من الخوارزمية وباألخص من الدوره الداخليه

نحصل على:Kانه بعد الدوره

P[I][J] = MINIMUM)P[I][K]+P[K][J],P[I][J] (

وهذا بدوره يضمن لنا اقصر الممرات J الى النقطه Iمن النقطه

دون المرور خالل أي نقطه رقمها اكبر على فرض Jمن

N-1ان نقاط المخطط مرقمه الى

أوجد مصفوفة أقصر الممرات للمخطط المبين في الشكل

Floyd خوارزمية فلويدباستخدام

مثـال

أوال نجد مصفوفة تكلفة الجوار

المسافة المباشرة بين القمةالواحدة والقمم االخرى.

تدل على عدم وجود أي ∞إشارة طريق مباشر.

بما أن عدد نقاط المخطط يساوي5 (A,B,C,D,E)

الحـل

A B C D E

A ∞ 23 10 ∞ 18

B 23

∞ 10 48 ∞

C 10

10 ∞ 19 7

D ∞ 48 19 ∞ 20

E 18

∞ 7 20 ∞

مصفوفات 5نحصل على ((P1, P2, P3, P4, P5

P1النتيجة للمصفوفة

نؤشر الى العمود االول والصفاالول ونقارن

بين القيم االخرى مع مجموع القيم المؤشر

عليها في نفس الصف والعمود.

اذا كان المجموع اقل من القيمةيجب ان نغير

القيمة بقيمة المجموع.

A B C D E

A ∞ 23 10 ∞ 18

B 23 ∞ 10 48 ∞

C 10 10 ∞ 19 7

D ∞ 48 19 ∞ 20

E 18 ∞ 7 20 ∞

يتم حساب القيم وتعديلها كاألتي:

B+B=23+23=46 is > ∞

∞من الواضح ان القيمة اصغر من Aاذن نغيرها كاألتي B C D E

A ∞ 23 10 ∞ 18

B 23 46 10 48 ∞

C 10 10 ∞ 19 7

D ∞ 48 19 ∞ 20

E 18 ∞ 7 20 ∞

نأخذ القيمة التي تليها ونقارنهاC+B=10+23=33 is > 10

ما دام المجموع ليس اقل من Aالقيمة اذن نتركهاكماهي B C D E

A ∞ 23 10 ∞ 18

B 23 46 10 48 ∞

C 10 10 ∞ 19 7

D ∞ 48 19 ∞ 20

E 18 ∞ 7 20 ∞

P1النتيجة النهائية للمصفوفة

مالحظة اذا كانت احدى القيم التي نريد

نترك القيمة ∞جمعها ومقارنتها كما هي

D+B= ∞+23

اذن ال يجوز

A B C D E

A ∞ 23 10 ∞ 18

B 23 46 10 48 41

C 10 10 20 19 7

D ∞ 48 19 ∞ 20

E 18 41 7 20 36

وهكذا مع بقية القيم الى ان ننتهي من مقارنة

جميع القيم بمجموع العمود االول والصف االول لتكون النتيجة كاآلتي

A B C D E

A ∞ 23 10 ∞ 18

B 23 46 10 48 41

C 10 10 20 19 7

D ∞ 48 19 ∞ 20

E 18 41 7 20 36

P2النتيجة للمصفوفة

االن نأخذ التكرار التالي وننفذ الخطوات

كما في الخطوات السابقة

P2النتيجة النهائية للمصفوفة

جميع القيم عدلت كما في المصفوفة التالية اآلتي

A B C D E

A 46 23 10 71 18

B 23 46 10 48 41

C 10 10 20 19 7

D 71 48 19 96 20

E 18 41 7 20 36

P3النتيجة للمصفوفة

التكرار التالي

A B C D E

A 46 23 10 71 18

B 23 46 10 48 41

C 10 10 20 19 7

D 71 48 19 96 20

E 18 41 7 20 36

P3النتيجة النهائية للمصفوفة

التكرار المناسب سيكون بتغيير البنود التالية

A B C D E

A 20 20 10 29 17

B 20 20 10 29 17

C 10 10 20 19 7

D 29 29 19 38 20

E 17 17 7 20 14

P4النتيجة النهائية للمصفوفة

A B C D E

A 20

20 10 29 17

B 20

20 10 29 17

C 10

10 20 19 7

D 29

29 19 38 20

E 17

17 7 20 14

التكرار التالي:في هذا التكرار ال نحتاج الى تغيير

أي بند من البنود لذلك نذهب الى التكرار الذي يليه

P5النتيجة النهائية للمصفوفة

A B C D E

A 20 20 10 29 17

B 20 20 10 29 17

C 10 10 14 19 7

D 29 29 19 38 20

E 17 17 7 20 14

في هذه الحالة هناك مادة وحيدة نحتاج كاآلتي الى تغييرها

المصفوفة النهائية

تكون مصفوفة أقصر الممرات P5اذن على شكلهاالتالي

A B C D E

A 20 20 10 29 17

B 20 20 10 29 17

C 10 10 14 19 7

D 29 29 19 38 20

E 17 17 7 20 14

المصفوفة النهائية

يمكن استخدام المصفوفة االخيرة من اجل اعادة

رسم الشبكة االصلية فتصبح كما يلي

Recommended