127

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

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289
Page 2: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Graphs & Networks

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

د. محمد ذويـب

Page 3: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 4: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

الشبكـاتNETWORK

المخططـات GRAPHSKS

Page 5: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

المخططات

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

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

Page 6: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 7: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

بين هذه المدن

بمعنى آخر

Page 8: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

وعلى اي حـال

Page 9: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

(Vertices)

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

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

G=)V,E(

.1

Page 10: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Graphs Type

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

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

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

Page 11: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

:اوال

Page 12: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 13: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

v2

v3 v5

v4

v1

Page 14: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

ثانيا:

Page 15: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

v1 v2

v3 v4 v5

v6 v7

Page 16: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 17: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

: اوال

Page 18: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

نهائي

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

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

Page 19: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 20: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

:مثـال

1

2 4

3

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

Page 21: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

الحـل:

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

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

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

Page 22: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

2

1

1

1

NULL

NULL

NULL

NULL

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

3

3

2

2

4

4

4

3

1

2

3

4

Page 23: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

قيمة الوزن

: ثانيا

Page 24: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 25: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

مثـال :

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

v1

v7v6

v4 v5v3

v2

Page 26: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

:الحـل

Page 27: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 28: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 29: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 30: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

: مثـال

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

Page 31: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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]; } }

Page 32: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

:حل المثال

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

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

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

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

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

Page 33: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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(; }

وهي كالتالي:

Page 34: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

حل المثال :

Page 35: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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(; }

:وهي كالتالي

Page 36: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

graph maximum = “ <<MAX<<endl;

cin>>n;

حل المثال:

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

buildadjm)adj,n(;

Page 37: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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; } }

Page 38: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 39: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 40: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

عدد الحواف.

Page 41: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

لشبكاتا NETWORKS

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

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

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

ثانيا:

Page 42: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 43: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

SHORTEST PATH

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

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

Page 44: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 45: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

(Dijkstra) ديجكسترا

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

Floyd)

Page 46: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 47: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 48: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 49: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 50: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 51: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

DC

A B

Page 52: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

كما يلي: الجوار   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] ;

Page 53: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

(Distance Matrix )

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

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

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

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

Page 54: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 55: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

(Include Matrix)

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

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

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

Page 56: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

True تساوي

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

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

Page 57: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

وصف خوارزمية ديجكسترا إليجاد ; 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 )(;

Page 58: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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 )( ; }

Page 59: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

Page 60: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

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

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

Page 61: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

: Initialize دالة2.

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

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

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

Page 62: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 63: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

Distance Matrix

Page 64: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 65: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

Page 66: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 67: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

الممر

Page 68: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

DISTANSE , INCLUDE , PATH

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

Page 69: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 70: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 71: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

  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

Page 72: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

: توضيحات

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

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

Page 73: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

يساوي 32767.

Page 74: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

حل المثال :

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

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

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

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

410 هو 3 و 2

Page 75: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

كما يلي

Page 76: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

يلي :

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

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

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

Page 77: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 78: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Distance : 0 800 2985 310 200

Page 79: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Path: 0 1 1 1 1

Page 80: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 81: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

DISTANCE وINCLUDE و PATH

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

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

Page 82: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 83: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

اقصر الممرات

Page 84: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 85: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 86: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 87: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 88: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

التوضيح :

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

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

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

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

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

Page 89: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

1هي النقطه

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

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

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

Page 90: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 91: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 92: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 93: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

INCLUDE

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

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

Page 94: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

النقطه 1 2 3 4 5

Distance 0 800 1731 310 200

Path 0 1 4 1 1

Include true false false true true

Page 95: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 96: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

1210

Page 97: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

UPDATE

Page 98: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

في هذه الخطوه

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

2

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

1210

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

true الى falseمن

Page 99: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

الثالث

النقطه 1 2 3 4 5

Distance 0 800 1210 310 200

Path 0 1 2 1 1

Include true true true false true

Page 100: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

[ 2 ] = 1

Page 101: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

وهي طول الممر

Page 102: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

النقطه 1 2 3 4 5

Distance 0 800 1210 310 200

Path 0 1 2 1 1

Include true true true true true

Page 103: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

تكلفة الجوار

1 2

4 5

2985

410800

400

1421

310612

200

3

Page 104: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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و النقطه

Page 105: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 106: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

Page 107: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

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

Page 108: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

مصفوفات وهي :

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

Cost)

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

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

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

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

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

Page 109: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

Page 110: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 111: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

مثـال

Page 112: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

الحـل

Page 113: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Page 114: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

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

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

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

Page 115: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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 ∞

Page 116: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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 ∞

Page 117: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

نأخذ القيمة التي تليها ونقارنها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 ∞

Page 118: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

D+B= ∞+23

اذن ال يجوز

Page 119: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 120: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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النتيجة للمصفوفة

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

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

Page 121: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Page 122: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Page 123: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

Page 124: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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

Page 125: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

Page 126: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

تكون مصفوفة أقصر الممرات 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

Page 127: المخططات والشبكات Graphs & Networks لمقرر تركيب البيانات وتصميم الخوارزميات  1289

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

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

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