0% found this document useful (0 votes)
81 views19 pages

28414

This document proposes a computer algorithm to find the shortest path between two centers S and T connected by a network of roads. The algorithm converts the road network into a matrix with rows and columns equal to the number of arcs in the network. The matrix elements are 1 if two centers are connected by an arc or 0 if not. The matrix is then processed in three main stages: 1) determining the number of paths in the network, 2) identifying the arcs in each path, and 3) calculating the length of each path based on the arcs. This algorithm can efficiently solve shortest path problems of any size road network.

Uploaded by

Zed Hm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views19 pages

28414

This document proposes a computer algorithm to find the shortest path between two centers S and T connected by a network of roads. The algorithm converts the road network into a matrix with rows and columns equal to the number of arcs in the network. The matrix elements are 1 if two centers are connected by an arc or 0 if not. The matrix is then processed in three main stages: 1) determining the number of paths in the network, 2) identifying the arcs in each path, and 3) calculating the length of each path based on the arcs. This algorithm can efficiently solve shortest path problems of any size road network.

Uploaded by

Zed Hm
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

‫)‪2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫]‪[68−51‬‬

‫ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬


‫*‬
‫ﺍﺒﺭﺍﻫﻴﻡ ﻨﺎﺌﺏ‬
‫ــــــــــــــــــــــــــــــــــــــــــــــــ‬
‫ﺍﻟﻤﻠﺨﺹ‬
‫‪ T‬ﺘﻭﺼـل ﺒﻴﻨﻬﻤـﺎ‬ ‫ﻴﻬﺩﻑ ﻫﺫﺍ ﺍﻟﺒﺤﺙ ﺇﻟﻰ ﺇﻴﺠﺎﺩ ﺍﻟﻁﺭﻴﻕ ﺍﻷﻗﺼﺭ ﺒـﻴﻥ ﻤﺭﻜـﺯﻴﻥ‪ S‬ﻭ‬
‫ﺸﺒﻜﺔ ﻤﻥ ﺍﻟﻁﺭﻕ ﺫﺍﺕ ﺃﻁﻭﺍل ﻤﻌﻴﻨﺔ ﺃﻭ ﺘﻜـﺎﻟﻴﻑ ﻤﺎﺩﻴـﺔ ﺃﻭ ﺯﻤﻨﻴـﺔ ﻤﻌﻴﻨـﺔ‪) ،‬ﺤﻴـﺙ ﺃﻥ‬
‫ﻜﻠﻤﺔ ﻤﺭﻜﺯ ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﻤﺩﻨﺎ ﺃﻭ ﻤﺴﺘﻭﺩﻋﺎﺕ ﺘﺨـﺯﻴﻥ ﺃﻭ ﻤﺭﺍﻜـﺯ ﺇﻨﺘـﺎﺝ ﺃﻭ ﻤﺭﺍﻜـﺯ‬
‫ﺍﺴﺘﻴﺭﺍﺩ ﻭﺘﺼﺩﻴﺭ( ﺒﺎﺴﺘﺨﺩﺍﻡ ﺨﻭﺍﺭﺯﻤﻴـﺔ ﺠﺩﻴـﺩﺓ ﻤﻘﺘﺭﺤـﺔ ﻗﺎﺒﻠـﺔ ﻟﻠﺒﺭﻤﺠـﺔ ﺤﺎﺴـﻭﺒﻴ ﹰﺎ‬
‫ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺘﺤﻭﻴل ﺸﺒﻜﺔ ﺍﻟﻁﺭﻕ )ﻤﻬﻤﺎ ﻜﺎﻥ ﺤﺠﻡ ﺸـﺒﻜﺔ ﺍﻟﻁـﺭﻕ ﻟﻠﻤـﺸﻜﻠﺔ ﺍﻟﻤﺩﺭﻭﺴـﺔ(‬
‫ﺇﻟﻰ ﻤﺼﻔﻭﻓﺔ ﻋﺩﺩ ﺃﻋﻤﺩﺘﻬﺎ ﻭﺃﺴﻁﺭﻫﺎ ﺘـﺴﺎﻭﻱ ﻋـﺩﺩ ﺃﻗـﻭﺍﺱ ﺍﻟـﺸﺒﻜﺔ ﻗﻴـﺩ ﺍﻟﺩﺭﺍﺴـﺔ‪،‬‬
‫ﻭﻋﻨﺎﺼﺭﻫﺎ‪ :‬ﺇﻤﺎ )‪ (1‬ﻭﻴﻌﻨﻲ ﺃﻨﻪ ﻴﻭﺠﺩ ﻗـﻭﺱ ﻴﻭﺼـل ﺒـﻴﻥ ﻤﺭﻜـﺯﻴﻥ‪ ،‬ﺃﻭ )‪ (0‬ﻭﻴﻌﻨـﻲ‬
‫ﺃﻨﻪ ﻻ ﻴﻭﺠﺩ ﻗﻭﺱ ﻴﻭﺼل ﺒﻴﻥ ﻤﺭﻜـﺯﻴﻥ‪ ،‬ﺜـﻡ ﻤﻌﺎﻟﺠـﺔ ﻫـﺫﻩ ﺍﻟﻤـﺼﻔﻭﻓﺔ ﻋﻠـﻰ ﺜـﻼﺙ‬
‫ﻤﺭﺍﺤل ﺃﺴﺎﺴﻴﺔ‪:‬‬
‫ﻻ ‪ :‬ﻤﺭﺤﻠﺔ ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺸﺒﻜﺔ‪ :‬ﻤـﻥ ﺨـﻼل ﺇﺤـﺼﺎﺀ ﻋـﺩﺩ‬
‫ﺃﻭ ﹰ‬
‫ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ)‪ (1‬ﻓـﻲ ﺍﻟـﺼﻑ ﺍﻷﻭل ﻤـﻥ ﺍﻟﻤـﺼﻔﻭﻓﺔ‪ ،‬ﻭﺍﻟﺘـﻲ ﺘﻤﺜـل ﻋـﺩﺩ‬
‫ﺍﻟﻤﺴﺎﺭﺍﺕ ﺍﻟﻤﺒﺩﺌﻲ‪ ،‬ﺜﻡ ﺍﻻﻨﺘﻘﺎل ﺇﻟﻰ ﺍﻷﺴﻁﺭ ﺍﻻﺘﻴـﺔ ﻭﺇﺤـﺼﺎﺀ ﻋـﺩﺩ ﺍﻟﻌﻨﺎﺼـﺭ ﺍﻟﺘـﻲ‬
‫ﺘﺴﺎﻭﻱ)‪ (1‬ﻓﺈﺫﺍ ﻜﺎﻥ ﻋﺩﺩﻫﺎ ﺃﻜﺜـﺭ ﻤـﻥ ﺍﻟﻭﺍﺤـﺩ ﻋﻨﺩﺌـﺫ ﺴـﺘﺘﻔﺭﻉ ﻋﻨـﺩ ﻫـﺫﺍ ﺍﻟـﺴﻁﺭ‬
‫ﻤﺴﺎﺭﺍﺕ ﺃﺨﺭﻯ ﻋﺩﺩﻫﺎ ﻴﺴﺎﻭﻱ ﺇﻟﻰ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼـﺭ ﺍﻟﺘـﻲ ﺘـﺴﺎﻭﻱ)‪ (1‬ﻤﻁﺭﻭﺤـﹰﺎ ﻤﻨﻬـﺎ‬
‫ﺍﻟﻭﺍﺤﺩ‪ ،‬ﻭﻴﻀﺎﻑ ﻫﺫﺍ ﺍﻟﻌﺩﺩ ﺇﻟﻰ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﺍﻟﻤﺒﺩﺌﻲ‪ ،‬ﻭﻫﻜﺫﺍ‪.‬‬
‫ﺜﺎﻨﻴﹰﺎ‪ :‬ﻤﺭﺤﻠﺔ ﺤﺼﺭ ﺍﻷﻗﻭﺍﺱ ﻭﻋﺩﺩﻫﺎ ﺍﻟﺩﺍﺨﻠﺔ ﻓـﻲ ﺘﺭﻜﻴـﺏ ﻜـل ﻤـﺴﺎﺭ‪ :‬ﻤـﻥ ﺨـﻼل‬
‫ﺘﺤﺩﻴﺩ ﺭﻗﻡ ﺍﻟﺴﻁﺭ ﻭﺭﻗﻡ ﺍﻟﻌﻤﻭﺩ ﻟﻠﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ)‪.(1‬‬

‫* ﺃﺴﺘﺎﺫ ﻤﺴﺎﻋﺩ ﻓﻲ ﻗﺴﻡ ﺍﻹﺤﺼﺎﺀ ﻭﻨﻅﻡ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ‪ ،‬ﻜﻠﻴﺔ ﺍﻻﻗﺘﺼﺎﺩ‪ ،‬ﺠﺎﻤﻌﺔ ﺤﻠﺏ‬
‫‪[email protected]‬‬
‫ﺘﺎﺭﻴﺦ ﺍﻟﺘﺴﻠﻡ ‪ 2009/ 12/ 14:‬ـــــــــــــــــ ﺘﺎﺭﻴﺦ ﺍﻟﻘﺒﻭل ‪5/19 :‬‬
‫‪2010/‬‬
‫[ ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬52]

‫ ﻤﺭﺤﻠﺔ ﺤﺴﺎﺏ ﺃﻁﻭﺍل ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺤـﺴﺏ ﺍﻷﻗـﻭﺍﺱ ﺍﻟﺩﺍﺨﻠـﺔ ﻓـﻲ ﺘﺭﻜﻴـﺏ ﻜـل‬:‫ﺜﺎﻟﺜﹰﺎ‬
.‫ﻤﺴﺎﺭ ﻭﺍﻟﻤﻘﺎﺭﻨﺔ ﺒﻴﻨﻬﺎ ﻟﺘﺤﺩﻴﺩ ﺍﻗﺼﺭﻫﺎ‬

A Computer Algorithm to Solve the Issue of the Shortest


Path

Abstract:
This research aims to finding the shortest path between two Centers S
and T which are connected by a network of roads of certain length and
certain material or time costs, (as the word Centre could be cities or storage
depots or production centers or centers of import and export) by using the
new proposed programmable algorithm which depends on converting the
road network, to the matrix in which number of columns and rows is equal
to the number of the arcs of the under-study network (What ever the size of
the road network of the studied problem is), and its elements are: either (1)
which means that there is an arc connecting the two centers, or (0) which
means that there is no arc connecting the two centers, and then processing
this matrix in three basic stages:
First: the stage of identifying the number of paths in the network: by
counting the number of elements that are equal to (1) in the first row of the
matrix, which represents the initial number of tracks, then moving to the
following lines and counting the number of elements that is equal to (1) if
they are more than one we will have other paths their number is equal to
the initial number of elements that is equal to (1) minus one, and add this
number to the number of tracks, and so on.
Second: the stage of limiting the number of arcs, which is embedded
in each path by identifying the number of the line and column of the
elements that are equal to (1).
Third: The stage of counting the lengths of the paths according to the
arcs embedded in each path and comparing them to determine the shortest
one.

‫ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ ـ ﺸﺒﻜﺎﺕ ﺍﻷﻋﻤﺎل ـ ﺨﻭﺍﺭﺯﻤﻴﺎﺕ‬: ‫ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﻔﺘﺎﺤﻴﺔ‬


Key words: Operation Research - Business networks - Algorithms

: ‫ﺍﻟﻤﻘـﺩﻤـﺔ‬
‫]‪[53‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤـﻥ ﺍﻟﻤـﺴﺎﺌل ﻴﻔﺘـﺭﺽ ﻭﺠـﻭﺩ ﻤﺭﺍﻜـﺯ ) ﻋﻘـﺩ ‪( Nodes‬‬
‫‪ m‬ﺘﻭﺼل ﺒﻴﻨﻬﺎ ﺸﺒﻜﺔ ﻤﻥ ﻁﺭﻕ ﺍﻟﻨﻘـل ) ﺃﻗـﻭﺍﺱ ﺘﻭﺼـل ﺒـﻴﻥ ﺃﺯﻭﺍﺝ‬ ‫ﻋﺩﺩﻫﺎ‬
‫ﺍﻟﻌﻘﺩ ( ‪ ،‬ﻭﻴﻔﺘﺭﺽ ﺃﻥ ﻟﻜل ﻗﻭﺱ ﻗﻴﻤﺔ ﻏﻴﺭ ﺴـﺎﻟﺒﺔ ‪ ، Cij‬ﻭﺍﻟﻘﻴﻤـﺔ ﻏﻴـﺭ ﺍﻟـﺴﺎﻟﺒﺔ‬
‫ﻴﻤﻜﻥ ﺃﻥ ﺘﻌﺒﺭ ﻋﻥ ﺘﻜﻠﻔﺔ ﺍﻻﻨﺘﻘﺎل ﺒـﻴﻥ ﻤﺭﻜـﺯﻴﻥ ﺃﻭ ﺍﻟﻤـﺴﺎﻓﺔ ﺒـﻴﻥ ﻤﺭﻜـﺯﻴﻥ ﺃﻭ‬
‫ﺯﻤﻥ ﺍﻻﻨﺘﻘﺎل ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ‪.‬‬
‫ﻨﻤﻴﺯ ﺒﻴﻥ ﺍﻟﻤﺭﺍﻜﺯ)ﻗﺎﺴﻡ‪: (1996،‬‬
‫• ﺍﻟﻤﺭﻜﺯ ﺍﻻﺒﺘﺩﺍﺌﻲ ‪ Source‬ﺃﻭ ﻤﺭﻜﺯ ﺍﻻﻨﻁﻼﻕ ﻭﺴـﻨﺭﻤﺯ ﻟـﻪ ﺒــ ‪ S‬ﻭﻨﻌﻁﻴـﻪ‬
‫ﺍﻟﺘﺭﻗﻴﻡ )‪(1‬‬
‫‪T‬‬ ‫ــ‬
‫ـﻪ ﺒـ‬
‫ـﻨﺭﻤﺯ ﻟـ‬
‫ـﻭل ﻭﺴـ‬
‫ـﺯ ﺍﻟﻭﺼـ‬
‫ـﺎﺌﻲ ‪ Terminal‬ﺃﻭ ﻤﺭﻜـ‬
‫ـﺯ ﺍﻟﻨﻬـ‬
‫• ﺍﻟﻤﺭﻜـ‬
‫ﻭﻨﻌﻁﻴﻪ ﺍﻟﺘﺭﻗﻴﻡ )‪(m‬‬
‫• ﺒﻘﻴﺔ ﺍﻟﻤﺭﺍﻜﺯ ﻫﻲ ﻤﺭﺍﻜﺯ ﻭﺴﻴﻁﻴﺔ ﻭﻨﻌﻁﻴﻬﺎ ﺍﻟﺘﺭﻗﻴﻡ ) ‪( 2 , 3 ,4 ,.... , m-1‬‬

‫ﺇﻥ ﻁﺭﻕ ﺍﻟﻨﻘـل ﺃﻭ ﺍﻷﻗـﻭﺍﺱ ﺍﻟﺘـﻲ ﺘﻭﺼـل ﺒـﻴﻥ ﺍﻟﻤﺭﺍﻜـﺯ ﺍﻟﻭﺴـﻴﻁﻴﺔ‬


‫ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﻤﺯﺩﻭﺠـﺔ ﺍﻻﺘﺠـﺎﻩ‪ ،‬ﺃﻱ ﺇﺫﺍ ﻜـﺎﻥ ﻟـﺩﻴﻨﺎ ﻤﺭﻜـﺯﺍﻥ ‪ i‬ﻭ ‪ j‬ﻓﺈﻨـﻪ‬
‫ﻴﻤﻜﻥ ﺍﻻﻨﺘﻘﺎل ﻤﻥ ‪ i‬ﺇﻟﻰ ‪ j‬ﻭﺍﻟﻌﻜﺱ‪ ،‬ﺒﻤﻌﻨـﻰ ﺁﺨـﺭ ﻴﻤﻜـﻥ ﺃﻥ ﻴﻤﺜـل ﺍﻟﻘـﻭﺱ‬
‫ﺍﻟﻭﺍﺤﺩ ﻗﻴﻤﺘﻴﻥ ﻏﻴﺭ ﺴﺎﻟﺒﺘﻴﻥ ﻭﻟﻜﻥ ﻜل ﻭﺍﺤـﺩﺓ ﻓـﻲ ﺍﺘﺠـﺎﻩ‪ .‬ﻭﺇﺫﺍ ﻭﺠـﺩ ﻗـﻭﺱ ﺫﻭ‬
‫ﺍﺘﺠﺎﻩ ﻭﺍﺤﺩ ﻋﻨﺩﺌﺫ ﻨﻌﺘﺒﺭ ﺃﻥ ﻗﻴﻤﺔ ﺍﻻﺘﺠﺎﻩ ﺍﻵﺨﺭ ﺼـﻔﺭ‪ ،‬ﺃﻤـﺎ ﺍﻷﻗـﻭﺍﺱ ﺍﻟﻤﻨﻁﻠﻘـﺔ‬
‫ﻤﻥ ﺍﻟﻤﺭﻜﺯ ﺍﻻﺒﺘﺩﺍﺌﻲ ﻭﺍﻷﻗﻭﺍﺱ ﺍﻟﻭﺍﺼﻠﺔ ﺇﻟـﻰ ﺍﻟﻤﺭﻜـﺯ ﺍﻟﻨﻬـﺎﺌﻲ ﻓﺈﻨﻬـﺎ ﻴﺠـﺏ ﺃﻥ‬
‫ﺘﺭﺘﺒﻁ ﺒﺎﺘﺠﺎﻩ ﻭﺍﺤﺩ‪.‬‬
‫ﻀﻤﻥ ﻫﺫﻩ ﺍﻟﻔﺭﻀﻴﺎﺕ ﻴﻁﻠﺏ ﺇﻴﺠﺎﺩ ﺃﻗﺼﺭ ﻁﺭﻴـﻕ )ﻤـﻥ ﺤﻴـﺙ ﺍﻟﺘﻜﻠﻔـﺔ ﺃﻭ‬
‫ﺍﻟﺯﻤﻥ ﺃﻭ ﺍﻟﻤﺴﺎﻓﺔ ﺤـﺴﺏ ﻁﺒﻴﻌـﺔ ﺍﻟﻤـﺸﻜﻠﺔ( ﻟﻼﻨﺘﻘـﺎل ﻤـﻥ ﺍﻟﻤﺭﻜـﺯ ‪ S‬ﺇﻟـﻰ‬
‫ﺍﻟﻤﺭﻜﺯ ‪ T‬ﻤﻥ ﺨﻼل ﻤﺭﺍﻜﺯ ﻭﺴﻴﻁﻴﺔ ﺘﻭﺼل ﺒﻴﻨﻬﺎ ﺸﺒﻜﺔ ﻤﻥ ﺍﻟﻁﺭﻕ‪.‬‬
‫ﻓﻲ ﺍﻟﺤﻘﻴﻘﺔ ﻫﻨﺎﻙ ﻋـﺩﺓ ﺃﺴـﺎﻟﻴﺏ ﺃﻭ ﺨﻭﺍﺭﺯﻤﻴـﺎﺕ ﺘﻁﺒـﻕ ﻹﻴﺠـﺎﺩ ﺃﻗـﺼﺭ‬
‫ﻁﺭﻴﻕ ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ ﺘﻭﺼل ﺒﻴﻨﻬﻤﺎ ﺴﻠـﺴﻠﺔ ﻤـﻥ ﺍﻟﻁـﺭﻕ )ﺍﻟـﺴﻭﺍﻓﻴﺭﻱ‪، (2003،‬‬
‫)‪ ،(Taha, 2005‬ﺘﻌﺘﻤﺩ ﻓﻲ ﺤل ﻤﺴﺎﺌل ﺃﻗﺼﺭ ﻁﺭﻴﻕ‪:‬‬
‫]‪ [54‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫• ﻋﻠﻰ ﺍﻟﺤل ﺍﻟﻤﺒﺎﺸﺭ ﻋﻠـﻰ ﺍﻟﻤﺨﻁـﻁ ﺍﻟـﺸﺒﻜﻲ‪ :‬ﻭﻫـﺫﻩ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـﺎﺕ ﻤﻤﻜﻨـﺔ‬


‫ﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ ﺸﺒﻜﺔ ﺍﻟﻁﺭﻕ ﺼـﻐﻴﺭﺓ ﺍﻟﺤﺠـﻡ‪ ،‬ﺃﻱ ﻋـﺩﺩ ﺍﻟﻤﺭﺍﻜـﺯ ﻗﻠﻴﻠـﺔ ﺠـﺩﹰﺍ‬
‫ﻭﺃﻗﻭﺍﺴﻬﺎ ﺫﺍﺕ ﺍﺘﺠﺎﻩ ﻭﺍﺤﺩ‪.‬‬
‫• ﻋﻠﻰ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﺩﻴﻨﺎﻤﻴﻜﻴﺔ‪ :‬ﻭﻫﺫﺍ ﻴﺤﺘﺎﺝ ﺇﻟـﻰ ﺇﺠـﺭﺍﺀ ﺒﻌـﺽ ﺍﻟﺘﻌـﺩﻴﻼﺕ ﻋﻠـﻰ‬
‫ﺍﻟﻤﺴﺄﻟﺔ ﻟﺘﺘﻨﺎﺴﺏ ﻭﺃﺴﻠﻭﺏ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﺩﻴﻨﺎﻤﻴﻜﻴﺔ‪.‬‬
‫ـﺩﺩ‬
‫ـﻡ‪ ،‬ﻋـ‬
‫ـﻐﻴﺭﺓ ﺍﻟﺤﺠـ‬
‫ـﺔ ﻟـﺸﺒﻜﺎﺕ ﺼـ‬
‫ـﺎﺕ ﻤﻤﻜﻨـ‬
‫ـﺫﻩ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـ‬
‫ﻭﺠﻤﻴـﻊ ﻫـ‬
‫ﺃﻗﻭﺍﺴﻬﺎ ﻗﻠﻴل ﻨﺴﺒﻴﹰﺎ ﺒﺸﺭﻁ ﺃﻥ ﺘﻜـﻭﻥ ﺃﻗﻭﺍﺴـﻬﺎ ﻤﻭﺠﻬـﺔ‪ ،‬ﺃﻱ ﺃﻥ ﺍﻟﻘـﻭﺱ ﺍﻟﻭﺍﺤـﺩ‬
‫ﻤﺭﺘﺒﻁ ﺒﺎﺘﺠﺎﻩ ﻭﺍﺤﺩ ﻓﻘﻁ ‪ ،‬ﻭﺒﺎﻟﺭﻏﻡ ﻤﻥ ﻫﺫﻩ ﺍﻟـﺸﺭﻭﻁ ﻭﻨﺘﻴﺠـﺔ ﻟﺤـل ﻋـﺩﺩ ﻤـﻥ‬
‫ﺍﻟﻤﺴﺎﺌل ﻻﺤﻅﻨﺎ ﺃﻨﻪ ﻤﻊ ﺍﺯﺩﻴﺎﺩ ﺤﺠﻡ ﺍﻟﺸﺒﻜﺔ ﺘـﺯﺩﺍﺩ ﺍﻟﻌﻤﻠﻴـﺎﺕ ﺍﻟﺤـﺴﺎﺒﻴﺔ ﻨﺘﻴﺠـﺔ‬
‫ﺘﻁﺒﻴﻕ ﺘﻠﻙ ﺍﻷﺴﺎﻟﻴﺏ ﺃﻭ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﻭﻨﺤﺘﺎﺝ ﺇﻟـﻰ ﻭﻗـﺕ ﻭﺠﻬـﺩ ﻜﺒﻴـﺭﻴﻥ ﻓـﻲ‬
‫ﺍﻟﺘﻁﺒﻴﻕ‪ ،‬ﺃﻤﺎ ﺍﻟﺸﺒﻜﺎﺕ ﺍﻟﺘـﻲ ﺒﻌـﺽ ﺃﻗﻭﺍﺴـﻬﺎ ﻤﺯﺩﻭﺠـﺔ ﺍﻻﺘﺠـﺎﻩ ﻓﺘـﺼﺒﺢ ﺘﻠـﻙ‬
‫ﺍﻷﺴﺎﻟﻴﺏ ﺃﻭ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﺸﺒﻪ ﻤﺴﺘﺤﻴﻠﺔ ﻭﺍﻥ ﺃﻤﻜﻥ ﺇﻴﺠﺎﺩ ﺍﻟﺤـل ﻓﺈﻨـﻪ ﻓـﻲ ﻏﺎﻴـﺔ‬
‫ﻤﻥ ﺍﻟﺘﻌﻘﻴﺩ ﻭﺘﺴﺘﻬﻠﻙ ﻭﻗﺘﹰﺎ ﻭﺠﻬﺩﹰﺍ ﻜﺒﻴﺭﻴﻥ‪.‬‬
‫ﻤﻥ ﺠﻬﺔ ﺃﺨـﺭﻯ ﻭﻤـﻥ ﻤﻨﻅـﻭﺭ ﺤﺎﺴـﻭﺒﻲ ﻓـﺈﻥ ﺠﻤﻴـﻊ ﺍﻷﺴـﺎﻟﻴﺏ ﺃﻭ‬
‫ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﻤﻥ ﺍﻟﺼﻌﺏ ﺤﻭﺴـﺒﺘﻬﺎ ﻭﻭﻀـﻊ ﺒﺭﻨـﺎﻤﺞ ﺤﺎﺴـﻭﺒﻲ ﺸـﺎﻤل ﻟﻜـل‬
‫ـﻙ‬
‫ـﺔ ﺘﻠـ‬
‫ـﺸﺒﻜﺎﺕ ﻭﺨﺎﺼـ‬
‫ـﺔ ﺍﻟـ‬
‫ـﻲ ﻫﻴﻜﻠﻴـ‬
‫ـﻨﺎ ﻓـ‬
‫ـﻥ ﺃﻥ ﺘﻌﺘﺭﻀـ‬
‫ـﻲ ﻴﻤﻜـ‬
‫ـﺎﻻﺕ ﺍﻟﺘـ‬
‫ﺍﻟﺤـ‬
‫ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﺃﻭ ﺍﻷﺴﺎﻟﻴﺏ ﺍﻟﺘﻲ ﺘﻌﺘﻤﺩ ﺇﻴﺠﺎﺩ ﺍﻟﺤل ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﻤﺒﺎﺸﺭﺓ‪.‬‬

‫ﺃﻫﻤﻴﺔ ﺍﻟﺒﺤﺙ‪:‬‬
‫ﻤﻥ ﻫﻨﺎ ﺘـﺄﺘﻲ ﺃﻫﻤﻴـﺔ ﺍﻟﺒﺤـﺙ ﻓـﻲ ﺘـﺼﻤﻴﻡ ﺨﻭﺍﺭﺯﻤﻴـﺔ ﺠﺩﻴـﺩﺓ ﻗﺎﺒﻠـﺔ‬
‫ﻟﻠﺒﺭﻤﺠﺔ ﺤﺎﺴﻭﺒﻴﹰﺎ ﺘﻌﺎﻟﺞ ﻤﺸﻜﻠﺔ ﺍﻗﺼﺭ ﻁﺭﻴﻕ ﻤﻬﻤـﺎ ﻴﻜـﻥ ﺤﺠـﻡ ﺸـﺒﻜﺔ ﺍﻟﻁـﺭﻕ‬
‫ﻭﻨﻭﻋﻬﺎ‪.‬‬
‫ﻫﺩﻑ ﺍﻟﺒﺤﺙ ‪:‬‬
‫ﺴﻨﻘﺩﻡ ﻓﻲ ﻫـﺫﺍ ﺍﻟﺒﺤـﺙ ﺨﻭﺍﺭﺯﻤﻴـﺔ ﺤﺎﺴـﻭﺒﻴﺔ ﻤﻘﺘﺭﺤـﺔ ﻹﻴﺠـﺎﺩ ﺃﻗـﺼﺭ‬
‫ﻁﺭﻴﻕ ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ ﺘﺭﺒﻁ ﺒﻴﻨﻬﻤﺎ ﺸﺒﻜﺔ ﻤﻥ ﺍﻟﻁـﺭﻕ ‪ ،‬ﻫـﺫﻩ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـﺔ ﺘﺤﻘـﻕ‬
‫ﻋﺩﺓ ﺃﻫﺩﺍﻑ ﻤﻌﹰﺎ ﺃﻫﻤﻬﺎ‪:‬‬
‫]‪[55‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫‪ .1‬ﺠﻌل ﻋﻤﻠﻴﺔ ﺍﻟﺘﻔﺘﻴﺵ ﻋﻥ ﺍﻟﻁﺭﻴﻕ ﺍﻷﻗﺼﺭ ﺁﻟﻴـﹰﺎ ﻋـﻥ ﻁﺭﻴـﻕ ﺒﺭﻤﺠﺘﻬـﺎ‬


‫ﺤﺎﺴﻭﺒﻴﹰﺎ‪.‬‬
‫‪ .2‬ﺘﻌﺎﻟﺞ ﺍﻟﺸﺒﻜﺎﺕ ﺫﺍﺕ ﺍﻷﻗﻭﺍﺱ ﺍﻟﻤﺯﺩﻭﺠﺔ ﺍﻻﺘﺠﺎﻩ ﺍﻴﻀﺎ‪.‬‬
‫‪ .3‬ﺘﻌﺎﻟﺞ ﺍﻟﺸﺒﻜﺎﺕ ﻤﻬﻤﺎ ﻜﺎﻥ ﻋﺩﺩ ﺍﻷﻗﻭﺍﺱ ) ﺍﻟﻁﺭﻕ ( ﺍﻟﺘـﻲ ﺘﻭﺼـل ﺒـﻴﻥ‬
‫ﻤﺭﻜﺯ ﺍﻻﻨﻁﻼﻕ ﻭﻤﺭﻜﺯ ﺍﻟﻭﺼﻭل‪.‬‬
‫ﻭﻓﻜﺭﺓ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﺘﻲ ﺴﻨﺸﺭﺡ ﺨﻁﻭﺍﺘﻬـﺎ ﻻﺤﻘـﹰﺎ ﺘﻌﺘﻤـﺩ ﻋﻠـﻰ ﺘﺤﻭﻴـل‬
‫ﺸﺒﻜﺔ ﺍﻟﻁﺭﻕ ﺇﻟﻰ ﻤـﺼﻔﻭﻓﺔ ﻋـﺩﺩ ﺃﻋﻤـﺩﺘﻬﺎ ﻭﺃﺴـﻁﺭﻫﺎ ﻴـﺴﺎﻭﻱ ﻋـﺩﺩ ﺃﻗـﻭﺍﺱ‬
‫ﺍﻟﺸﺒﻜﺔ ﻗﻴﺩ ﺍﻟﺩﺭﺍﺴﺔ‪ ،‬ﻭﻋﻨﺎﺼﺭﻫﺎ‪:‬‬
‫ﺇﻤﺎ ) ‪ ( 1‬ﻭﻴﻌﻨﻲ ﺃﻨﻪ ﻴﻭﺠﺩ ﻗﻭﺱ ﻴﻭﺼل ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ‬
‫ﺃﻭ ) ‪ ( 0‬ﻭﻴﻌﻨﻲ ﺃﻨﻪ ﻻ ﻴﻭﺠﺩ ﻗﻭﺱ ﻴﻭﺼل ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ‬
‫ﺜﻡ ﻤﻌﺎﻟﺠﺔ ﻫﺫﻩ ﺍﻟﻤﺼﻔﻭﻓﺔ ﻋﻠﻰ ﺜﻼﺙ ﻤﺭﺍﺤل ﺃﺴﺎﺴﻴﺔ‪:‬‬
‫ﻻ ‪ :‬ﻤﺭﺤﻠﺔ ﺘﺤﺩﻴﺩ ﻋـﺩﺩ ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺍﻟﻤﻭﺠـﻭﺩﺓ ﻓـﻲ ﺍﻟـﺸﺒﻜﺔ‪ :‬ﻤـﻥ ﺨـﻼل‬
‫ﺃﻭ ﹰ‬
‫ﺇﺤﺼﺎﺀ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘـﻲ ﺘـﺴﺎﻭﻱ)‪ (1‬ﻓـﻲ ﺍﻟـﺼﻑ ﺍﻷﻭل ﻤـﻥ ﺍﻟﻤـﺼﻔﻭﻓﺔ‪،‬‬
‫ﻭﺍﻟﺘﻲ ﺘﻤﺜل ﻋـﺩﺩ ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺍﻟﻤﺒـﺩﺌﻲ‪ ،‬ﺜـﻡ ﺍﻻﻨﺘﻘـﺎل ﺇﻟـﻰ ﺍﻷﺴـﻁﺭ ﺍﻻﺘﻴـﺔ‬
‫ﻭﺇﺤﺼﺎﺀ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ)‪ (1‬ﻓـﺈﺫﺍ ﻜـﺎﻥ ﻋـﺩﺩﻫﺎ ﺃﻜﺜـﺭ ﻤـﻥ ﺍﻟﻭﺍﺤـﺩ‬
‫ﻋﻨﺩﺌﺫ ﺴﺘﺘﻔﺭﻉ ﻋﻨﺩ ﻫﺫﺍ ﺍﻟﺴﻁﺭ ﻤﺴﺎﺭﺍﺕ ﺃﺨﺭﻯ ﻋـﺩﺩﻫﺎ ﻴـﺴﺎﻭﻱ ﻋـﺩﺩ ﺍﻟﻌﻨﺎﺼـﺭ‬
‫ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ)‪ (1‬ﻤﻁﺭﻭﺤـﹰﺎ ﻤﻨﻬـﺎ ﺍﻟﻭﺍﺤـﺩ‪ ،‬ﻭﻴـﻀﺎﻑ ﻫـﺫﺍ ﺍﻟﻌـﺩﺩ ﺇﻟـﻰ ﻋـﺩﺩ‬
‫ﺍﻟﻤﺴﺎﺭﺍﺕ ﺍﻟﻤﺒﺩﺌﻲ‪ ،‬ﻭﻫﻜﺫﺍ‪.‬‬
‫ﺜﺎﻨﻴﹰﺎ‪ :‬ﻤﺭﺤﻠﺔ ﺤﺼﺭ ﺍﻷﻗﻭﺍﺱ ﻭﻋﺩﺩﻫﺎ ﺍﻟﺩﺍﺨﻠـﺔ ﻓـﻲ ﺘﺭﻜﻴـﺏ ﻜـل ﻤـﺴﺎﺭ‪ :‬ﻤـﻥ‬
‫ﺨﻼل ﺘﺤﺩﻴﺩ ﺭﻗﻡ ﺍﻟﺴﻁﺭ ﻭﺭﻗﻡ ﺍﻟﻌﻤﻭﺩ ﻟﻠﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ)‪.(1‬‬
‫ﺜﺎﻟﺜﹰﺎ‪ :‬ﻤﺭﺤﻠﺔ ﺤﺴﺎﺏ ﺃﻁﻭﺍل ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺤـﺴﺏ ﺍﻷﻗـﻭﺍﺱ ﺍﻟﺩﺍﺨﻠـﺔ ﻓـﻲ ﺘﺭﻜﻴـﺏ‬
‫ﻜل ﻤﺴﺎﺭ ﻭﺍﻟﻤﻘﺎﺭﻨﺔ ﺒﻴﻨﻬﺎ ﻟﺘﺤﺩﻴﺩ ﺍﻗﺼﺭﻫﺎ‪.‬‬
‫ﺃﻤﺎ ﺤﺎﺴﻭﺒﻴﹰﺎ ﻓﺈﻨﻪ ﻋﻨﺩ ﺘﺸﻐﻴل ﺍﻟﺒﺭﻨـﺎﻤﺞ ﺍﻟﺤﺎﺴـﻭﺒﻲ ﻴﻜﻔـﻲ ﺇﺩﺨـﺎل ﻋـﺩﺩ‬
‫ﺍﻷﻗﻭﺍﺱ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﻭﺭﻗﻡ ﺒﺩﺍﻴﺔ ﻜل ﻗﻭﺱ ﻭﻨﻬﺎﻴﺘـﻪ‪ ،‬ﻓـﻀﻼ ﻋـﻥ ﻗﻴﻤـﺔ ﺍﻟﻘـﻭﺱ‬
‫)ﺘﻜﻠﻔﺔ ﺃﻭ ﺯﻤﻥ ﺃﻭ ﻁﻭل (‪ ،‬ﻭﺍﻟﺤﺎﺴـﻭﺏ ﻴﻘـﻭﻡ ﻤـﻥ ﺨـﻼل ﺇﺠـﺭﺍﺀﺍﺕ ﻤﻌﺎﻟﺠـﺔ‬
‫ﻤﺼﻔﻭﻓﺔ ﺍﻟﺸﺒﻜﺔ ﺍﻟﻤﺫﻜﻭﺭﺓ ﺃﻋﻼﻩ ﺒﺘﺤﺩﻴﺩ ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺍﻟﻤﻤﻜﻨـﺔ ﻓـﻲ ﺍﻟـﺸﺒﻜﺔ ﻤﻬﻤـﺎ‬
‫]‪ [56‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫ﻜﺎﻨﺕ ﻤﺘﺩﺍﺨﻠﺔ ﻭﺍﻷﻗﻭﺍﺱ ﺍﻟﺩﺍﺨﻠﺔ ﻓﻲ ﻜل ﻤﺴﺎﺭ ﻭﺃﻁـﻭﺍل ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺜـﻡ ﺍﺨﺘﻴـﺎﺭ‬


‫ﺃﻗﺼﺭ ﺘﻠﻙ ﺍﻟﻤﺴﺎﺭﺍﺕ‪.‬‬

‫ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﻤﻘﺘﺭﺤﺔ‪:‬‬
‫ﻹﻴﺠﺎﺩ ﺍﻗﺼﺭ ﻁﺭﻴﻕ ﺒﻴﻥ ﺍﻟﻤﺭﻜـﺯ ‪ 1‬ﻭ ﺍﻟﻤﺭﻜـﺯ ‪ m‬ﻭﺍﻟﻠـﺫﻴﻥ ﺘﻭﺼـل‬
‫ﺒﻴﻨﻬﻤﺎ ﺸﺒﻜﺔ ﻤﻥ ﺍﻟﻁﺭﻕ ﻨﺘﺒﻊ ﺍﻟﻤﺭﺍﺤل ﺍﻻﺘﻴﺔ‪:‬‬
‫ﺘﻨﻭﻴﻪ‪ :‬ﺇﻥ ﺍﻟﻤﺘﺤﻭﻻﺕ ﻭﺍﻟﺭﻤﻭﺯ ﻭﺍﻟﻤﺴﻤﻴﺎﺕ ﺍﻟﺘـﻲ ﺴﻨـﺴﺘﺨﺩﻤﻬﺎ ﻓـﻲ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـﺔ‬
‫ﺫﺍﺕ ﻤﺩﻟﻭﻻﺕ ﺒﺭﻤﺠﻴﺔ ﻭﺘﻌﺒﺭ ﻋﻥ ﻤﺼﻁﻠﺤﺎﺕ ﺤﺎﺴﻭﺒﻴﺔ ﺒﺭﻤﺠﻴﺔ ﻓﻘﻁ‪.‬‬

‫ﺍﻟﻤﺭﺤﻠﺔ ﺍﻷﻭﻟﻰ ‪:‬‬


‫ﺍﻟﻘﻴﺎﻡ ﺒﺎﻹﺠﺭﺍﺀﺍﺕ ﺍﻟﺘﻤﻬﻴﺩﻴﺔ ﺍﻻﺘﻴﺔ ‪:‬‬
‫‪.n‬‬ ‫ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻷﻗﻭﺍﺱ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ‪ ،‬ﻭﻟﻴﻜﻥ‬ ‫♦‬
‫ﺘﺭﻗﻴﻡ ﺃﻗﻭﺍﺱ ﺍﻟﺸﺒﻜﺔ ﺒﺄﺭﻗﺎﻡ ﻤﺘﺴﻠﺴﻠﺔ ﺘﺒﺩﺃ ﻤﻥ ‪ 1‬ﻭﺤﺘﻰ ‪. n‬‬ ‫♦‬
‫ﺇﻥ ﺍﻟﻘﻭﺱ ‪ i‬ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﻴﻭﺼل ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ )ﻋﻘﺩﺘﻴﻥ(‪ ،‬ﻭﻟـﻀﺭﻭﺭﺓ ﺍﻟﺒﺭﻤﺠـﺔ‬ ‫♦‬
‫ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺴﻨﺭﻤﺯ‪:‬‬
‫‪ .1‬ﻟﺭﻗﻡ ﻋﻘﺩﺓ ﺒﺩﺍﻴﺔ ﺍﻟﻘﻭﺱ ‪ i‬ﺒـ ) ‪،act ( i , 1‬‬
‫‪i=1,2‬‬ ‫‪ .2‬ﻭﻟﺭﻗﻡ ﻋﻘﺩﺓ ﻨﻬﺎﻴﺔ ﺍﻟﻘﻭﺱ ﺒـ ) ‪ ،act ( i , 2‬ﺤﻴﺙ‬
‫‪., 3, …….. , n‬‬
‫ﻭﺴﻨﺭﻤﺯ ﻟﻘﻴﻤﺔ ﺍﻟﻘﻭﺱ ﺒــ ) ‪ C( i‬ﺍﺫ ﺍﻥ ﺍﻟﻘﻴﻤـﺔ ﻴﻤﻜـﻥ ﺃﻥ ﺘﻜـﻭﻥ ﻤـﺴﺎﻓﺔ‬
‫ﺃﻭ ﺯﻤﻥ ﺃﻭ ﺘﻜﻠﻔﺔ ﺤﺴﺏ ﻁﺒﻴﻌﺔ ﺍﻟﻤﺸﻜﻠﺔ ﺍﻟﻤﺩﺭﻭﺴﺔ‪.‬‬
‫ﻭﻟﺘﻨﻔﻴﺫ ﺍﻟﻤﺭﺍﺤل ﺍﻟﻼﺤﻘﺔ ﻟﻠﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴ ﹰﺎ‪:‬‬ ‫♦‬

‫‪ .1‬ﻨﻀﻴﻑ ﻗﻭﺴﺎ ﺇﻟﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺸﺒﻜﺔ ﻴﺄﺨﺫ ﺍﻟﺘﺭﻗﻴﻡ ‪ 0‬ﻭﺭﻗﻡ ﻋﻘﺩﺓ ﺒﺩﺍﻴﺘﻪ ‪ 0‬ﺃﻱ‪:‬‬
‫‪act ( 0 , 1 ) = 0‬‬
‫ﻭﺭﻗﻡ ﻋﻘﺩﺓ ﻨﻬﺎﻴﺘﻪ ﺘﺄﺨﺫ ﻨﻔﺱ ﺭﻗﻡ ﻋﻘﺩﺓ ﺒﺩﺍﻴﺔ ﺍﻟﻘﻭﺱ ‪ 1‬ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﺃﻱ‪:‬‬
‫‪act ( 0 , 2 ) = act ( 1 , 1 ) = 1‬‬
‫]‪[57‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫‪ .2‬ﻨﻀﻴﻑ ﻗﻭﺴﺎ ﺇﻟﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺸﺒﻜﺔ ﻴﺄﺨﺫ ﺍﻟﺘﺭﻗﻴﻡ ‪ n +1‬ﻭﺭﻗﻡ ﻋﻘﺩﺓ ﺒﺩﺍﻴﺘﻪ ﺘﺄﺨﺫ ﻨﻔﺱ‬
‫ﺭﻗﻡ ﻋﻘﺩﺓ ﻨﻬﺎﻴﺔ ﺍﻟﻘﻭﺱ ‪ n‬ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﺃﻱ‪:‬‬
‫‪act ( n+1 , 1 ) = act ( n , 2 )= m‬‬
‫ﻭﺭﻗﻡ ﻋﻘﺩﺓ ﻨﻬﺎﻴﺘﻪ ‪ m+1‬ﺃﻱ‪:‬‬
‫‪act ( n+1 , 2 ) = m+1‬‬
‫ﺃﻱ ﺃﻀﻔﻨﺎ ﻗﻭﺴﺎ ﺇﻟﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺸﺒﻜﺔ ﻭﻗﻭﺴـﺎ ﺇﻟـﻰ ﻨﻬﺎﻴﺘﻬـﺎ ﻭﻫـﺫﺍ ﻀـﺭﻭﺭﻱ‬
‫ﻟﺘﻨﻔﻴﺫ ﺍﻟﻤﺭﺍﺤل ﺍﻟﻼﺤﻘﺔ ﺤﺎﺴﻭﺒﻴﹰﺎ‪.‬‬

‫ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺜﺎﻨﻴﺔ ‪:‬‬


‫‪ X‬ﻤـﻥ ﺍﻟﻤﺭﺘﺒـﺔ ) ‪( n + 1 ) X ( n + 1‬‬ ‫ﻨـﺸﻜل ﻤـﺼﻔﻭﻓﺔ ﻤﺭﺒﻌـﺔ‬
‫ﺃﻋﻤﺩﺘﻬﺎ ﻤﺭﻗﻤﺔ ﻤﻥ ‪ 1‬ﻭﺤﺘﻰ ‪ ،n +1‬ﺃﻤﺎ ﺍﺴـﻁﺭﻫﺎ ﻓﻤﺭﻗﻤـﺔ ﻤـﻥ ‪ 0‬ﻭﺤﺘـﻰ ‪n‬‬
‫‪ ،‬ﻋﻨﺎﺼﺭﻫﺎ ﺘﺤﺴﺏ ﻜﻤﺎ ﻴﺎﺘﻲ‪:‬‬
‫‪x(i,j)=1‬‬
‫ﺇﺫﺍ ﻜﺎﻥ ﺭﻗﻡ ﻋﻘﺩﺓ ﻨﻬﺎﻴﺔ ﺍﻟﻘﻭﺱ ) ‪ ( i‬ﻴـﺴﺎﻭﻱ ﺭﻗـﻡ ﻋﻘـﺩﺓ ﺒﺩﺍﻴـﺔ ﺍﻟﻘـﻭﺱ ) ‪،( j‬‬
‫ﺃﻱ ﻨﻀﻊ ) ‪ ( 1‬ﺇﺫﺍ ﻜـﺎﻥ ﺍﻟﻘـﻭﺱ ‪ j‬ﻴﻠـﻲ ﺍﻟﻘـﻭﺱ ‪ i‬ﻤﺒﺎﺸـﺭﺓ‪.‬ﻭ‪x ( i , j ) = 0 :‬‬
‫ﻓﻴﻤﺎ ﻋﺩﺍ ﺫﻟﻙ‪ .‬ﺤﻴﺙ‪ i = 0 , 1 , 2 ,....... , n :‬ﻭ ‪. j = 1 , 2 ,....... , n + 1‬‬
‫ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺜﺎﻟﺜﺔ ‪:‬‬
‫ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺸﺒﻜﺔ‬
‫ﻟﻨﺭﻤﺯ ﺒـ ‪ Path‬ﻟﻌﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﻭ ﺒـ ) ‪ Line ( i‬ﻟﻌﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ‬
‫ﺍﻟﺴﻁﺭ ‪ i‬ﺍﻟﺘﻲ ﻗﻴﻤﺘﻬﺎ ﺘﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ‪ ،‬ﻟﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ) ﺤﺎﺴﻭﺒﻴﹰﺎ(‬
‫ﻨﺘﺒﻊ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻻﺘﻴﺔ‪:‬‬

‫‪Path = 0‬‬ ‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 1‬ﻨﻀﻊ‬

‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 2‬ﻨﺒﺩﺃ ﻤﻥ ﺍﻟﺴﻁﺭ ﺍﻷﻭل ﺃﻱ ‪ 0 =i‬ﻭ ﻨﻀﻊ ‪Line ( 0 ) = 0‬‬


‫ﺜﻡ ﻨﺤﺴﺏ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﻗﻴﻤﻬﺎ ﺘـﺴﺎﻭﻱ ﺍﻟﻭﺍﺤـﺩ‪ ،‬ﻭ ﻋﻨﺩﺌـﺫ ﺘـﺼﺒﺢ ﻗﻴﻤـﺔ‬
‫‪Path‬ﻭ) ‪ Line ( 0‬ﺒﻌﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﻓﻲ ﺍﻟﺴﻁﺭ ﺍﻷﻭل ﺃﻱ‪:‬‬
‫]‪ [58‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫‪IF‬‬ ‫‪x ( i , j ) = 1 ; j = i+1 , i+ 2 , i+3 ,...... , n + 1‬‬


‫‪THEN Line ( i ) = Line ( i ) + 1 , Path = Path + 1‬‬
‫‪Line ( i ) = 0‬‬ ‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 3‬ﻨﻨﺘﻘل ﺇﻟﻰ ﺍﻟﺴﻁﺭ ﺍﻻﺘﻲ ‪ i = i + 1‬ﻭﻨﻀﻊ‬
‫ﺜﻡ ﻨﺤﺴﺏ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﻗﻴﻤﻬﺎ ﺘﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﻓـﻲ ﻫـﺫﺍ ﺍﻟـﺴﻁﺭ‪ ،‬ﻭ ﻋﻨﺩﺌـﺫ‬
‫ﺘﺼﺒﺢ ﻗﻴﻤﺔ ) ‪ Line ( i‬ﺒﻌﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﺃﻱ‪:‬‬
‫‪IF‬‬ ‫‪x ( i , j ) = 1 ; j = i+1 , i+ 2 , i+3 ,...... , n + 1‬‬
‫‪THEN Line ( i ) = Line ( i ) + 1‬‬
‫ﻓـﺈﻥ ﻋـﺩﺩ ﺍﻟﻤـﺴﺎﺭﺍﺕ ﻓـﻲ ﺍﻟـﺸﺒﻜﺔ‬ ‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 4‬ﺇﺫﺍ ﻜﺎﻥ ‪Line ( i) > 1‬‬
‫ﺴﺘﺯﺩﺍﺩ ﺒﻤﻘﺩﺍﺭ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﺘﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﻨﺎﻗﺹ ﻭﺍﺤﺩ‪ ،‬ﺃﻱ‪:‬‬
‫‪IF‬‬ ‫‪Line ( i ) > 1 THEN‬‬ ‫) ‪Path = Path + ( Line ( i ) - 1‬‬
‫ﻭﻫﺫﺍ ﻴﻘﺎﺒل ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﺃﻨﻪ ﻫﻨﺎﻙ ﺃﻜﺜﺭ ﻤـﻥ ﻗـﻭﺱ ﻴﻨﻁﻠـﻕ ﻤـﻥ ﺍﻟﻌﻘـﺩﺓ‬
‫) ‪.act ( i , 2‬‬
‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 5‬ﻨﻜﺭﺭ ﺍﻟﺨﻁﻭﺘﻴﻥ )‪ (3‬ﻭ )‪ (4‬ﺤﺘـﻰ ﺘـﺼﺒﺢ ‪ i=n‬ﻭﻋﻨﺩﺌـﺫ ﻨﻜـﻭﻥ‬
‫ﻗﺩ ﺤﺩﺩﻨﺎ ﻋﺩﺩ ﺍﻷﻗﻭﺍﺱ ﺍﻟﺘـﻲ ﺘـﺄﺘﻲ ﺒﻌـﺩ ﻜـل ﻗـﻭﺱ ‪ i‬ﻤـﻥ ﺨـﻼل ) ‪،Line ( i‬‬
‫ﻭﺤﺴﺒﻨﺎ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ﻤﻥ ﺨﻼل ﻗﻴﻤﺔ ‪.Path‬‬
‫ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺭﺍﺒﻌﺔ‪:‬‬
‫ﺘﺤﺩﻴﺩ ﺍﻷﻗﻭﺍﺱ ﺍﻟﺩﺍﺨﻠﺔ ﻓﻲ ﺘﺭﻜﻴﺏ ﻜل ﻤﺴﺎﺭ ﻭﻋﺩﺩﻫﺎ‪.‬‬
‫ﻟﻀﺭﻭﺭﺓ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺴﻨﺭﻤﺯ ﺒـ ‪:‬‬
‫‪ k‬ﻟﻌﺩﺩ ﺍﻷﻨﺸﻁﺔ ﻓﻲ ﻜل ﻤﺴﺎﺭ‬
‫‪ m‬ﻟﺭﻗﻡ ﺍﻟﻤﺴﺎﺭ‬
‫‪ L2‬ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﻌﺎﻤﻭﺩ‬
‫‪ Y1‬ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﺴﻁﺭ‬
‫‪ Y2‬ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﻌﺎﻤﻭﺩ )ﻭﺫﻟﻙ ﻟﻠﺭﺠﻭﻉ ﺇﻟـﻰ ﻋﻨـﺼﺭ ﺘﻤـﺕ ﻤﻌﺎﻟﺠﺘـﻪ‬
‫ﻓﻲ ﻤﺭﺤﻠﺔ ﺴﺎﺒﻘﺔ(‬
‫)‪ S (m, k‬ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺍﻟﻨﺸﺎﻁ ﺍﻟﺩﺍﺨل ﻓﻲ ﺘﺭﻜﻴﺏ ﺍﻟﻤﺴﺎﺭ‪.‬‬
‫ﻟﺘﺤﺩﻴﺩ ﺍﻷﻗﻭﺍﺱ ﺍﻟﺩﺍﺨﻠﺔ ﻓﻲ ﺘﺭﻜﻴـﺏ ﻜـل ﻤـﺴﺎﺭ ﻭﻋـﺩﺩﻫﺎ‪ ،‬ﻭﻨﺘﺒـﻊ ﺍﻟﺨﻁـﻭﺍﺕ‬
‫ﺍﻻﺘﻴﺔ‪:‬‬
‫]‪[59‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫‪k=0‬‬ ‫ﻭ‬ ‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 1‬ﻨﻀﻊ ‪m=1‬‬


‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 2‬ﻨﺒـﺩﺃ ﻤـﻥ ﺍﻟـﺴﻁﺭ ﺍﻷﻭل ‪ i=0‬ﻭﻨﺄﺨـﺫ ﺃﻭل ﻋﻨـﺼﺭ ) ‪x ( 0 , j‬‬
‫ﻴـﺴﺎﻭﻱ ﺍﻟﻭﺍﺤـﺩ ‪ ،‬ﺤﻴـﺙ ‪ ، j = 1 , 2 ,..... , n + 1‬ﻭﻨﺤـﺘﻔﻅ ﺒـﺭﻗﻡ ﻋـﺎﻤﻭﺩﻩ‬
‫ﻭﺴﻁﺭﻩ ﺃﻱ ﻨﻀﻊ‪:‬‬
‫‪Y1 = i ، Y2 = j ،‬‬ ‫‪L2 = j‬‬
‫ﺜﻡ ﻨﺒﺩل ﺍﻟﻭﺍﺤﺩ ﻟﻠﻌﻨـﺼﺭ ﺍﻟﻤﺨﺘـﺎﺭ ﺒـﺼﻔﺭ‪ ،‬ﺃﻱ ﻨـﻀﻊ‪ x ( 0 , j ) = 0 :‬ﻭﻨﻨﺘﻘـل‬
‫ﺇﻟﻰ ﺍﻟﺨﻁﻭﺓ ) ‪.( 3‬‬
‫ﺃﻤﺎ ﺇﺫﺍ ﻜﺎﻨﺕ ﺠﻤﻴﻊ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ ﺍﻟـﺴﻁﺭ ﺍﻷﻭل ﺘـﺴﺎﻭﻱ ﺍﻟـﺼﻔﺭ‪ ،‬ﻓﻨﺘﻭﻗـﻑ ﻋـﻥ‬
‫ﺍﻟﻤﺘﺎﺒﻌﺔ ﻭﺒﺫﻟﻙ ﻨﻜﻭﻥ ﻗﺩ ﺤﺩﺩﻨﺎ ﺠﻤﻴﻊ ﺍﻟﻤـﺴﺎﺭﺍﺕ ﺍﻟﻤﻤﻜﻨـﺔ ﻓـﻲ ﺍﻟـﺸﺒﻜﺔ‪ ،‬ﻭﻨﻨﺘﻘـل‬
‫ﺇﻟﻰ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺨﺎﻤﺴﺔ‪.‬‬
‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 3‬ﻨﺫﻫﺏ ﺇﻟﻰ ﺍﻟﺴﻁﺭ ﺍﻟـﺫﻱ ﺤـﺩﺩ ﻋـﺎﻤﻭﺩﻩ ﻓـﻲ ﺍﻟﺨﻁـﻭﺓ ﺍﻟـﺴﺎﺒﻘﺔ‬
‫ﺃﻱ‪:‬‬
‫‪i= L2‬‬
‫ﻭﻫﻨﺎ ﻟﺩﻴﻨﺎ ﺤﺎﻟﺘﺎﻥ‪:‬‬
‫• ﺍﻟﺤﺎﻟﺔ ﺍﻷﻭﻟﻰ‪ :‬ﺇﺫﺍ ﻜﺎﻥ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘـﻲ ﺘـﺴﺎﻭﻱ ﺍﻟﻭﺍﺤـﺩ ﻓـﻲ ﺍﻟـﺴﻁﺭ‬
‫ﻴﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﺃﻱ‪:‬‬
‫‪Line ( i ) = 1‬‬
‫ﻋﻨﺩﺌﺫ‪:‬‬
‫‪ .1‬ﻨﺤﺩﺩ ﻋﺎﻤﻭﺩ ﺍﻟﻌﻨﺼﺭ ﺍﻟﻭﺤﻴﺩ ﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﺃﻱ ‪.L2 = j :‬‬
‫‪ .2‬ﻨﻀﻊ ‪ k = k + 1‬ﻭ ‪ ، S( m , k ) = i‬ﺃﻱ ﺃﻥ ﺍﻟﻘﻭﺱ ‪ i‬ﻴـﺩﺨل ﻓـﻲ ﺘﺭﻜﻴـﺏ‬
‫ﺍﻟﻤﺴﺎﺭ‪.‬‬
‫‪ .3‬ﺇﺫﺍ ﻜﺎﻥ ‪ L2 = n + 1‬ﻋﻨﺩﺌﺫ ﻨﻨﺘﻘل ﺇﻟﻰ ﺍﻟﺨﻁﻭﺓ ) ‪ ،( 4‬ﻭﺇﻻ ﻨﻌﻭﺩ ﺇﻟـﻰ ﺍﻟﺨﻁـﻭﺓ‬
‫)‪.(3‬‬

‫• ﺍﻟﺤﺎﻟﺔ ﺍﻟﺜﺎﻨﻴﺔ ‪ :‬ﺇﺫﺍ ﻜﺎﻥ ﻴﻭﺠﺩ ﺃﻜﺜﺭ ﻤﻥ ﻗﻭﺱ ﻤﺘﻔﺭﻉ ﺃﻱ‪:‬‬


‫]‪ [60‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫‪Line ( i ) > 1‬‬


‫ﻋﻨﺩﺌﺫ‪:‬‬
‫‪ .1‬ﻨﺤﺩﺩ ﻋﺎﻤﻭﺩ ﺃﻭل ﻋﻨﺼﺭ ﻴﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ﻓﻲ ﻫﺫﺍ ﺍﻟﺴﻁﺭ ﺃﻱ‪.L2= j :‬‬
‫‪ .2‬ﻨﻀﻊ ‪ k = k + 1‬ﻭ ‪ S ( m , k ) = i‬ﺃﻱ ﺃﻥ ﺍﻟﻘـﻭﺱ ‪ i‬ﻴـﺩﺨل ﻓـﻲ ﺘﺭﻜﻴـﺏ‬
‫ﺍﻟﻤﺴﺎﺭ‪.‬‬
‫‪ .3‬ﻨﻀﻊ ‪ x ( i , j ) = 0‬ﺃﻱ ﻨﺠﻌل ﻗﻴﻤﺔ ﺍﻟﻌﻨﺼﺭ ﺍﻟﻤﺨﺘﺎﺭ ﻴﺴﺎﻭﻱ ﺍﻟﺼﻔﺭ‪.‬‬
‫‪ Line ( i ) = Line ( i ) - 1‬ﺃﻱ ﺴﻴﻨﻘﺹ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ ﻫﺫﺍ ﺍﻟﺴﻁﺭ‬ ‫‪ .4‬ﻨﻀﻊ‬
‫ﺒﻤﻘﺩﺍﺭ ﻭﺍﺤﺩ‪.‬‬
‫‪ .5‬ﻨﻌﻭﺩ ﺇﻟﻰ ﺍﻟﻌﻨﺼﺭ ) ‪ x ( Y1 , Y2‬ﺍﻟﺫﻱ ﺠﻌﻠﻨﺎﻩ ﻴﺴﺎﻭﻱ ﺍﻟـﺼﻔﺭ ﻓـﻲ ﺍﻟﻤﺭﺤﻠـﺔ‬
‫ﺍﻟﺴﺎﺒﻘﺔ‪ ،‬ﻭﻨﺠﻌﻠﻪ ﻴﺴﺎﻭﻱ ﺍﻟﻭﺍﺤﺩ ‪ ،‬ﺃﻱ‪:‬‬
‫‪x ( Y1 , Y2 ) = 1‬‬
‫‪ .6‬ﻨﻀﻊ ‪ Line ( Y1) = Line ( Y1 ) + 1‬ﺃﻱ ﺴﻴﺯﺩﺍﺩ ﻋﺩﺩ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ ﺍﻟﺴﻁﺭ ‪Y1‬‬
‫ﺒﻤﻘﺩﺍﺭ ﻭﺍﺤﺩ‪.‬‬
‫‪ .7‬ﻨﺤﺘﻔﻅ ﺒﺭﻗﻡ ﻋﺎﻤﻭﺩ ﻭﺴﻁﺭ ﺍﻟﻌﻨﺼﺭ ﺍﻟﺫﻱ ﺠﻌﻠﻨﺎﻩ ﻴﺴﺎﻭﻱ ﺍﻟﺼﻔﺭ ﻓﻲ ) ‪ ( 3‬ﺃﻱ‪:‬‬
‫‪.Y1 = i ، Y2 = j‬‬
‫ﺍﺫﺍ ﻜﺎﻥ ‪ L2 = n + 1‬ﻋﻨﺩﺌﺫ ﻨﻨﺘﻘل ﺇﻟﻰ ﺍﻟﺨﻁﻭﺓ ) ‪ ،( 4‬ﻭﺇﻻ ﻨﻌﻭﺩ ﺇﻟﻰ ﺍﻟﺨﻁﻭﺓ ) ‪( 3‬‬

‫ﺍﻟﺨﻁﻭﺓ ) ‪:( 4‬‬


‫‪ .1‬ﻨﻀﻊ ‪ Path ( m ) = k‬ﻟﺘﺨﺯﻴﻥ ﻋﺩﺩ ﺍﻷﻗﻭﺍﺱ ﻓﻲ ﺍﻟﻤﺴﺎﺭ ‪.m‬‬
‫‪ .2‬ﻨﻀﻊ ‪ m = m + 1‬ﻟﺘﺤﺩﻴﺩ ﺃﻗﻭﺍﺱ ﺍﻟﻤﺴﺎﺭ ﺍﻻﺘﻲ‪.‬‬
‫‪ .3‬ﻨﻀﻊ ‪ k = 0‬ﻭﻨﻌﻭﺩ ﺇﻟﻰ ﺍﻟﺨﻁﻭﺓ ) ‪ ( 2‬ﻤﻥ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺭﺍﺒﻌﺔ‪.‬‬

‫ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺨﺎﻤﺴﺔ ‪:‬‬


‫ﻟﺘﺤﺩﻴﺩ ﺃﻗﺼﺭ ﻤﺴﺎﺭ ) ﺃﻗﺼﺭ ﻁﺭﻴﻕ (‬
‫ﺍﻟﺨﻁﻭﺓ ) ‪ :( 1‬ﺘﺤﺩﻴﺩ ﺃﻁﻭﺍل ﺍﻟﻤﺴﺎﺭﺍﺕ ) ﻤـﺴﺎﻓﺔ ﺃﻭ ﺘﻜﻠﻔـﺔ ﺃﻭ ﺯﻤـﻥ (ﻭﺫﻟـﻙ‬
‫ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﻼﻗﺔ ﺍﻻﺘﻴﺔ‪:‬‬
[61] _____________ 2010 (18) ‫מא‬ ‫א‬ ‫א‬ ‫א‬

path ( m )
Total _ Path (m) = ∑ C(i) * (S(m, k ))
k =1

m = 1,2 ,3 ,......., path : ‫ﺤﻴﺙ‬


:‫ ﺘﺤﺩﻴﺩ ﺃﻗﺼﺭ ﻤﺴﺎﺭ ﻭﺫﻟﻙ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﻌﻼﻗﺔ ﺍﻻﺘﻴﺔ‬:( 2 ) ‫ﺍﻟﺨﻁﻭﺓ‬
Shortest _ path = Min [Total _ Path (m)]
m=1, 2 , 3,....,path

: ‫ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺤﺎﺴﻭﺒﻲ ﻟﻠﺨﻭﺍﺭﺯﻤﻴﺔ‬


‫ﺴــﻨﻌﺭﺽ ﻓــﻲ ﺍﻟــﺼﻔﺤﺎﺕ ﺍﻻﺘﻴــﺔ ﺍﻟﺒﺭﻨــﺎﻤﺞ ﺍﻟﺤﺎﺴــﻭﺒﻲ ﺍﻟﻤــﺼﻤﻡ‬
(Deitel, 1994 ) C++ ‫ﻟﻠﺨﻭﺍﺭﺯﻤﻴــﺔ ﺍﻟﻤﻘﺘﺭﺤــﺔ ﺒﺎﺴــﺘﺨﺩﺍﻡ ﻟﻐــﺔ ﺍﻟـــ‬
‫ ﻓﻀﻼ ﻋﻥ ﺍﻟﻨﺘﺎﺌﺞ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﻟﻠﻤﺜـﺎل ﺍﻟﻤﻌـﺭﻭﺽ ﻓـﻲ ﺍﻟـﺸﻜل‬،(Stewart,2006)
.(1)

:‫ﺍﻟﺒﺭﻨﺎﻤﺞ‬
#include <iostream.h>
#include <iomanip.h>
main()
{
int n=10,I,j,l1,l2,y1,y2,path,m,k,sh,shortest,t;
int x[20][20],line[20],s[20][20],path1[20],totalpath[20];
int c[12]={0,7,4,9,7,1,3,1,6,3,4,0};
int
act[12][2]={{0,1},{1,2},{1,3},{1,4},{1,5},{3,2},{3,4},{5,4},{2,6},{4,6},{5,6},{
6,7}};
for(i=0;i<=n+1;i++)
{
cout<<"i="<<i;
cout<<"\t"<<act[i][0]<<"\t"<<act[i][1]<<"\t"<<c[i];cout<<"\n";
}
cout<<"\n";
for(j=1;j<=38;j++) cout<<"-";
cout<<"\n |";
for(j=1;j<=n+1;j++) cout<<setw(3)<<j;
cout<<"\n";
for(j=1;j<=38;j++) cout<<"-";
for(i=0;i<=n;i++)
{cout<<"\n"<<setw(3)<<i<<" | ";
‫[ ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬62]

for(j=1;j<=n+1;j++)
{
if(act[i][1]==act[j][0]) x[i][j]=1;
else x[i][j]=0; cout<<x[i][j]<<setw(3);
}}
cout<<"\n";
for(j=1;j<=38;j++) cout<<"-";
path=0;i=0;line[i]=0;
for(j=1;j<=n+1;j++)
{
if(x[i][j]==1)
{line[i]=line[i]+1;path=path+1; } }
R1:i=i+1;line[i]=0;
for(j=1;j<=n+1;j++)
{
if(x[i][j]==1) line[i]=line[i]+1;
}
if (line[i]>1) path=path+(line[i]-1);
if (I<n) goto R1;
cout<<"\n\n Number Path in Network = "<<path;
cout<<"\n";
m=1;k=0;
R2:i=0;j= 1;
R3:if(x[i][j]==1)
{
x[i][j]=0;line[i]=line[i]-1;
l1=i;l2=j;y1=i;y2=j;
goto R4;
}
else
{
j=j+1; if(j<=n+1) go to R3;else go to R6;
}
R4:i=l2;
if(line[i]==1)
{ for(j=1;j<=n+1;j++)
{ if(x[i][j]==1)
{k=k+1;s[m][k]=i;l1=i;l2=j;
if(j==n+1) goto R5; else goto R4;}}}
else
{for(j=1;j<=n+1;j++)
{if(x[i][j]==1){k=k+1;s[m][k]=i; x[i][j]=0;line[i]=line[i]-1;
x[y1][y2]=1; line[y1]=line[y1]+1;
y1=i;y2=j; l1=i;l2=j;
[63] _____________ 2010 (18) ‫מא‬ ‫א‬ ‫א‬ ‫א‬

if(j==n+1) go to R5; else go to R4 ; }} }


R5:path1 [m]=k; m=m+1;k=0;
goto R2;
R6:for(i=1;i<=path;i++)
{
cout<<"\n path("<<i<<")=";
for(j=1;j<=path1[i];j++)
cout<<"("<<act[s[i][j]][0]<<"<<act[s[i][j]][1]<<"),";}
cout<<"\n";
for(m=1;m<=path;m++)
{totalpath[m]=0;
for(k=1;k<=path1[m];k++)
{totalpath[m]=totalpath[m]+c[s[m][k]];}
cout<<"\n TOTAL PATH("<<m<<")="<< totalpath[m];}
cout<<"\n";
shortest=totalpath[1];sh=1;
for(m=1;m<=path;m++)
{if(shortest>totalpath[m])
{shortest=totalpath[m];sh=m;}}
cout<<"\n SHORTEST PATH is path("<<sh<<")="<<shortest;
cout<<"\n";
return 0;}

: ‫ﺍﻟﻨﺘﺎﺌﺞ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ‬
‫( ﻟﺘﻭﻀـﻴﺢ ﻨﺘـﺎﺌﺞ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـﺔ ﺍﻟﺤﺎﺴـﻭﺒﻴﺔ‬1) ‫ﻟﻨﺄﺨﺫ ﺍﻟﺸﺒﻜﺔ ﻓﻲ ﺍﻟﺸﻜل‬
.‫ﺍﻟﻤﺫﻜﻭﺭﺓ ﺍﻨﻔﺎ‬
‫]‪ [64‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫‪2‬‬

‫‪7‬‬
‫‪1‬‬
‫‪4‬‬ ‫‪6‬‬
‫‪1‬‬ ‫‪3‬‬

‫‪3‬‬

‫‪3‬‬
‫‪7‬‬ ‫‪4‬‬ ‫‪6‬‬

‫‪1‬‬ ‫‪4‬‬

‫‪5‬‬

‫ﺍﻟﺸﻜل ) ‪( 1‬‬

‫ﺃﻭ ﹰﻻ ‪ :‬ﺤﺴﺏ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻷﻭﻟﻰ ﻓﺈﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻲ ﻴﺠـﺏ ﺇﺩﺨﺎﻟﻬـﺎ ﺇﻟـﻰ ﺍﻟﺤﺎﺴـﻭﺏ‬
‫ﻋﻨﺩ ﺘﺸﻐﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻲ ‪:‬‬
‫• ﻋﺩﺩ ﺃﻗﻭﺍﺱ ﺍﻟﺸﺒﻜﺔ ﻫﻭ ‪ 10‬ﺃﻗﻭﺍﺱ‬
‫• ﺃﺭﻗﺎﻡ ﺒﺩﺍﻴﺔ ﻜل ﻗﻭﺱ ﻭﻨﻬﺎﻴﺘﻪ ﻜﻤﺎ ﻓﻲ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻲ‪:‬‬
‫ﺍﻷﻗﻭﺍﺱ‬ ‫ﺭﻗﻡ ﺒﺩﺍﻴﺔ ﺍﻟﻘﻭﺱ‬ ‫ﺭﻗﻡ ﻨﻬﺎﻴﺔ ﺍﻟﻘﻭﺱ‬ ‫ﻗﻴﻤﺔ ﺍﻟﻘﻭﺱ‬
‫‪i‬‬ ‫) ‪act ( i ,1‬‬ ‫) ‪act ( i ,2‬‬ ‫)‪C(i‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪3‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪9‬‬
‫‪4‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪7‬‬
‫‪5‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫‪6‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪3‬‬
‫‪7‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪1‬‬
‫‪8‬‬ ‫‪2‬‬ ‫‪6‬‬ ‫‪6‬‬
‫‪9‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪3‬‬
‫‪10‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪4‬‬
‫]‪[65‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫‪X‬‬ ‫ﺜﺎﻨﻴ ﹰﺎ ‪ :‬ﺤـﺴﺏ ﺍﻟﻤﺭﺤﻠـﺔ ﺍﻟﺜﺎﻨﻴـﺔ ﻴﻘـﻭﻡ ﺍﻟﺤﺎﺴـﻭﺏ ﺒﺘـﺸﻜﻴل ﺍﻟﻤـﺼﻔﻭﻓﺔ‬


‫ﺍﻻﺘﻴﺔ ‪:‬‬

‫‪j‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪2‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪i‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪5‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪6‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪7‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪8‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪9‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬
‫‪10‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬

‫ﺜﺎﻟﺜ ﹰﺎ‪ :‬ﺤﺴﺏ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺜﺎﻟﺜﺔ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻋﺩﺩ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺍﻟﺸﺒﻜﺔ ‪:‬‬
‫‪Number path in Network = 6‬‬

‫ﺭﺍﺒﻌ ﹰﺎ‪ :‬ﺤﺴﺏ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺭﺍﺒﻌﺔ ﻴﺘﻡ ﺘﺤﺩﻴـﺩ ﺍﻷﻗـﻭﺍﺱ ﺍﻟﺩﺍﺨﻠـﺔ ﻓـﻲ ﺘﺭﻜﻴـﺏ ﻜـل‬
‫ﻤﺴﺎﺭ ‪:‬‬
‫) ‪Path ( 1‬‬ ‫=‬ ‫)‪(1 - 2) , (2 - 6‬‬
‫) ‪Path ( 2‬‬ ‫=‬ ‫)‪(1 - 3) , (3 - 2) , (2 - 6‬‬
‫) ‪Path ( 3‬‬ ‫=‬ ‫)‪(1 - 3) , (3 - 4) , (4 - 6‬‬
‫) ‪Path ( 4‬‬ ‫=‬ ‫)‪(1 - 4) , (4 - 6‬‬
‫) ‪Path ( 5‬‬ ‫=‬ ‫)‪(1 - 5) , (5 - 4) , (4 - 6‬‬
‫) ‪Path ( 6‬‬ ‫=‬ ‫)‪(1 - 5) , (5 - 6‬‬
‫ﺤﺴﺏ ﺍﻟﻤﺭﺤﻠﺔ ﺍﻟﺨﺎﻤـﺴﺔ ﻴـﺘﻡ ﺤـﺴﺎﺏ ﻁـﻭل ﻜـل ﻤـﺴﺎﺭ ﻭﺘﺤﺩﻴـﺩ‬ ‫ﺨﺎﻤﺴ ﹰﺎ‪:‬‬
‫ﺃﻗﺼﺭﻫﺎ‪:‬‬
‫) ‪Total Path ( 1‬‬ ‫=‬ ‫‪13‬‬
‫) ‪Total Path ( 2‬‬ ‫=‬ ‫‪11‬‬
‫) ‪Total Path ( 3‬‬ ‫=‬ ‫‪10‬‬
‫) ‪Total Path ( 4‬‬ ‫=‬ ‫‪12‬‬
‫) ‪Total Path ( 5‬‬ ‫=‬ ‫‪11‬‬
‫]‪ [66‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫‪Total Path ( 6 ) = 11‬‬


‫‪Shortest Path is Path ( 3 ) = 10‬‬
‫ﻨﺘﺎﺌﺞ ﻭﺘﻭﺼﻴﺎﺕ‪:‬‬
‫ﺇﻥ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺍﻟﻤﻘﺘﺭﺤﺔ ﺍﻟﺘـﻲ ﺘﻭﺼـﻠﻨﺎ ﺍﻟـﻰ ﺍﻋـﺩﺍﺩﻫﺎ ﻓـﻲ‬ ‫‪.1‬‬
‫ﻫﺫﺍ ﺍﻟﺒﺤﺙ ﺘﻘﻠل ﻤﻥ ﺤﺠﻡ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺩﺨﻠﺔ ﺇﻟﻰ ﺍﻟﺤﺎﺴـﻭﺏ‪ ،‬ﺍﺫ ﻴـﺘﻡ ﺇﺩﺨـﺎل ﻓﻘـﻁ‬
‫ﻋﺩﺩ ﺃﻗﻭﺍﺱ ﺍﻟﺸﺒﻜﺔ ﻭﺭﻗﻡ ﺒﺩﺍﻴﺔ ﻜل ﻗﻭﺱ ﻭﻨﻬﺎﻴﺘـﻪ ﻭﻗﻴﻤﺘـﻪ )ﺍﻟﻘﻴﻤـﺔ ﻜﻤـﺎ ﺃﺸـﺭﻨﺎ‬
‫ﺴﺎﺒﻘﹰﺎ ﻫﻲ ﺇﻤﺎ ﻤﺴﺎﻓﺔ ﺃﻭ ﺘﻜﻠﻔﺔ ﺃﻭ ﺯﻤﻥ( ﻭﻴﻘﻭﻡ ﺍﻟﺤﺎﺴـﻭﺏ ﺘﻠﻘﺎﺌﻴـﹰﺎ ﺒﺘـﺭﻗﻴﻡ ﺃﻗـﻭﺍﺱ‬
‫ﺍﻟﺸﺒﻜﺔ ﻭﺘﺤﻭﻴﻠﻬﺎ ﺇﻟـﻰ ﺍﻟﻤـﺼﻔﻭﻓﺔ ﺍﻟﻤﻨﺎﺴـﺒﺔ ﺜـﻡ ﻤﻌﺎﻟﺠﺘﻬـﺎ ﺤـﺴﺏ ﺨﻁـﻭﺍﺕ‬
‫ﻭﻤﺭﺍﺤل ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ‪.‬‬
‫ﺇﻥ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺍﻟﻤﻘﺘﺭﺤﺔ ﺍﻟﺘـﻲ ﺘﻭﺼـﻠﻨﺎ ﺍﻟـﻰ ﺍﻋـﺩﺍﺩﻫﺎ ﻓـﻲ‬ ‫‪.2‬‬
‫ﻫﺫﺍ ﺍﻟﺒﺤﺙ ﺍﻟﺤﺎﺴﻭﺒﻲ ﺘﻌﻁﻲ ﺍﻟﻨﺘﺎﺌﺞ ﺒﺴﺭﻋﺔ ﻓﺎﺌﻘﺔ ﻭﺩﻗـﺔ ﻤﺘﻨﺎﻫﻴـﺔ ﺒﻤﺠـﺭﺩ ﺇﺩﺨـﺎل‬
‫ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﻁﻠﻭﺏ ﺇﺩﺨﺎﻟﻬﺎ ﺒﺸﻜﻠﻬﺎ ﺍﻟﺼﺤﻴﺢ‪.‬‬
‫ﻤﻘﺎﺭﻨﺔ ﻤﻊ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﺍﻷﺨﺭﻯ ﺍﻟﻤـﺫﻜﻭﺭﺓ ﻗـﻲ ﻤﻘﺩﻤـﺔ ﺍﻟﺒﺤـﺙ ﻓـﺈﻥ‬ ‫‪.3‬‬
‫ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺍﻟﻤﻘﺘﺭﺤﺔ ﺘﻘﻠل ﻤـﻥ ﺍﻟﺠﻬـﺩ ﻭﺍﻟﻭﻗـﺕ ﻓـﻲ ﺇﻴﺠـﺎﺩ ﺃﻗـﺼﺭ‬
‫ﻁﺭﻴﻕ ﺒﻴﻥ ﻤﺭﻜﺯﻴﻥ ﻴﺭﺒﻁ ﺒﻴﻨﻬﻤﺎ ﺸﺒﻜﺔ ﻤـﻥ ﺍﻟﻁـﺭﻕ‪ ،‬ﻓﻴﻤـﺎ ﺇﺫﺍ ﻜـﺎﻥ ﺍﻟﺒﺭﻨـﺎﻤﺞ‬
‫ﺍﻟﺤﺎﺴﻭﺒﻲ ﻤﺨﺯﻨﺎ ﺩﺍﺨل ﺍﻟﺤﺎﺴﻭﺏ ﺤﺴﺏ ﺍﻷﺼﻭل‪.‬‬
‫ـﺴﺎﺌل‬
‫ـﻲ ﻤـ‬
‫ـﺔ ﻓـ‬
‫ـﻭﺒﻴﺔ ﺍﻟﻤﻘﺘﺭﺤـ‬
‫ـﺔ ﺍﻟﺤﺎﺴـ‬
‫ـﺘﺨﺩﺍﻡ ﺍﻟﺨﻭﺍﺭﺯﻤﻴـ‬
‫ـﻲ ﺒﺎﺴـ‬
‫ﻨﻭﺼـ‬ ‫‪.4‬‬
‫ﺠﺩﻭﻟﺔ ﺍﻟﻤﺸﺎﺭﻴﻊ ﻋﻨﺩ ﺩﺭﺍﺴﺔ ﺸـﺒﻜﺎﺕ ﺍﻷﻋﻤـﺎل ﺍﻟﻤﺘﻌﻠﻘـﺔ ﺒـﺎﻟﺯﻤﻥ ﻭﺍﻟﺘﻜﻠﻔـﺔ‪ ،‬ﺍﺫ‬
‫ﺃﻥ ﺘﻠﻙ ﺍﻟﺸﺒﻜﺎﺕ ﺘﺤﺘﺎﺝ ﺍﻟـﻰ ﺍﺠـﺭﺍﺀ ﻋﻤﻠﻴـﺎﺕ ﻀـﻐﻁ ﺍﻷﻨـﺸﻁﺔ ) ﺍﻷﻗـﻭﺍﺱ (‬
‫ﻟﺠﺩﻭﻟﺔ ﺘﻨﻔﻴﺫ ﺸﺒﻜﺔ ﺍﻷﻋﻤـﺎل ﺒﺄﻗـل ﻓﺘـﺭﺓ ﺯﻤﻨﻴـﺔ ﻭﺒﺄﻗـل ﺯﻴـﺎﺩﺓ ﻤﻤﻜﻨـﺔ ﻋﻠـﻰ‬
‫ﺍﻟﺘﻜﺎﻟﻴﻑ )ﻗﺎﺴﻡ‪) ،(1996،‬ﺍﻟﻤﺤﻤـﺩ ﻭ ﻨﺎﺌـﺏ ﻭﺒﺎﻗﻴـﺔ‪ )، (2008 ،‬ﻨﺎﺌـﺏ‪(1998 ،‬‬
‫ﻭﻹﺠﺭﺍﺀ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻀﻐﻁ ﻴﺠﺏ ﻤﻌﺭﻓﺔ ﺠﻤﻴﻊ ﺍﻟﻤﺴﺎﺭﺍﺕ ﻓﻲ ﺸﺒﻜﺔ ﺍﻷﻋﻤﺎل‪.‬‬
‫ﺇﻥ ﺘﻁﺒﻴﻕ ﺍﻟﺨﻭﺍﺭﺯﻤﻴﺔ ﺍﻟﺤﺎﺴﻭﺒﻴﺔ ﺍﻟﻤﻘﺘﺭﺤـﺔ ﻴـﺩﻭﻴﹰﺎ ﻤـﻥ ﺩﻭﻥ ﺍﻟﺤﺎﺴـﻭﺏ‬ ‫‪.5‬‬
‫ﺘﺤﺘﺎﺝ ﺇﻟﻰ ﻭﻗﺕ ﻭﺠﻬﺩ ﻜﺒﻴـﺭﻴﻥ ﻟـﺫﻟﻙ ﻨﻭﺼـﻲ ﺒﺎﺴـﺘﺨﺩﺍﻡ ﺍﺴـﺘﺨﺩﺍﻡ ﺍﻟﺒﺭﻨـﺎﻤﺞ‬
‫ﺍﻟﺤﺎﺴﻭﺒﻲ ﺍﻟﻤﺫﻜﻭﺭﺓ ﺍﻨﻔﺎ‪ ،‬ﺍﺫ ﻴﺘﻡ ﺘﺨﺯﻴﻨﻪ ﻓﻲ ﺍﻟﺤﺎﺴـﻭﺏ ﻤـﺭﺓ ﻭﺍﺤـﺩﺓ ﻓﻘـﻁ ﺜـﻡ‬
‫ﺇﺩﺨﺎل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﻁﻠﻭﺒﺔ‪ ،‬ﻜﻤﺎ ﺒﻴﻨﺎ ﺴـﺎﺒﻘﺎ‪ ،‬ﻓـﻲ ﻜـل ﻤـﺭﺓ ﻨﺤﺘـﺎﺝ ﺍﻟـﻰ ﺇﻴﺠـﺎﺩ‬
‫]‪[67‬‬ ‫)‪_____________ 2010 (18‬‬ ‫מא‬ ‫א‬ ‫א‬ ‫א‬

‫ﺃﻗﺼﺭ ﻁﺭﻴﻕ ﻟﻤﺸﻜﻠﺔ ﻤﻌﻴﻨﺔ‪ ،‬ﻭﺍﻟﺤﺎﺴﻭﺏ ﻴﻌﻁﻲ ﺍﻟﻨﺘـﺎﺌﺞ ﺒﻤـﺩﺓ ﺯﻤﻨﻴـﺔ ﺃﻗـل ﻤـﻥ‬
‫ﺍﻟﺜﺎﻨﻴﺔ ﻭﺒﺩﻗﺔ ﻤﺘﻨﺎﻫﻴﺔ‪.‬‬
‫]‪ [68‬ـــــــــــــــــ ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟﺤل ﻤﺴﺄﻟﺔ ﺃﻗﺼﺭ ﻁﺭﻴﻕ‬

‫ﺍﻟﻤﺭﺍﺠﻊ‬
‫‪ .1‬ﺃﺒﻭ ﺍﻟﻔﺘﻭﺡ ﺼﺎﻟﺢ ﺴﻤﻴﺭ‪2000 ،‬ـ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻟﺩﻋﻡ ﺍﻟﻘـﺭﺍﺭﺍﺕ ﻓـﻲ ﻅـل‬
‫ﺍﻟﺘﺸﻐﻴل ﺍﻹﻟﻜﺘﺭﻭﻨﻲ‪ ،‬ﺠﺎﻤﻌﺔ ﺍﻟﻤﻨﺼﻭﺭﺓ‪ ،‬ﺍﻟﻘﺎﻫﺭﺓ‪ ،‬ﺹ‪.123‬‬
‫‪ .2‬ﺍﻟﺴﻭﺍﻓﻴﺭﻱ ﻓﺘﺤﻲ ﺭﺯﻕ‪2003 ،‬ـ ﻤﺩﺨل ﻤﻌﺎﺼﺭ ﻓﻲ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ‪ :‬ﺘﻁﺒﻴﻘـﺎﺕ‬
‫ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺤﺎﺴﺏ ﺍﻟﺩﺍﺭ ﺍﻟﺠﺎﻤﻌﻴﺔ‪ ،‬ﺍﻹﺴﻜﻨﺩﺭﻴﺔ‪ .‬ﺹ ‪.275‬‬
‫‪ .3‬ﺍﻟﺼﻔﺩﻱ ﻤﺤﻤﺩ ﺴﺎﻟﻡ ‪ 1999 ،‬ـ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ ) ﺘﻁﺒﻴﻕ ﻭ ﺨﻭﺍﺭﺯﻤﻴﺎﺕ ( ــ‬
‫ﺩﺍﺭ ﻭﺍﺌل ﻟﻠﻨﺸﺭ ـ ﺍﻷﺭﺩﻥ‪ ،‬ﺹ ‪. 34‬‬
‫‪ .4‬ﺍﻟﻌﺒﻴﺩﻱ ﻤﺤﻤﻭﺩ‪ ،‬ﺍﻟﻔﻀل ﻤﺅﻴﺩ ﻋﺒﺩ ﺍﻟﺤﺴﻴﻥ‪2004 ،‬ـ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﺘﻁﺒﻴﻘﺎﺘﻬﺎ‬
‫ﻓﻲ ﺇﺩﺍﺭﺓ ﺍﻷﻋﻤﺎل‪ ،‬ﻤﺅﺴﺴﺔ ﺍﻟﻭﺭﺍﻕ‪،‬ﻋﻤﺎﻥ‪.‬‬
‫‪ .5‬ﻗﺎﺴﻡ ﺃﺤﻤﺩ ﺭﻓﻴﻕ ‪ 1996،‬ـ ﺍﻟﻤﺩﺨل ﺇﻟﻰ ﺒﺤﻭﺙ ﺍﻟﻌﻤﻠﻴـﺎﺕ‪ .‬ﺠﺎﻤﻌـﺔ ﺤﻠـﺏ ـ‬
‫ﺴﻭﺭﻴﺎ‪ .‬ﺹ‪ - 300‬ﺹ ‪283‬‬
‫‪ .6‬ﺍﻟﻤﺤﻤﺩ ﺼﺒﺤﻲ‪ ،‬ﻨﺎﺌﺏ ﺇﺒﺭﺍﻫﻴﻡ‪ ،‬ﻤﺸﺭﻗﻲ ﺤﺴﻥ‪ ،‬ﺒﺎﻗﻴـﺔ ﺇﻨﻌﺎﻡ‪2008 ،‬ــ ﺒﺤـﻭﺙ‬
‫ﺍﻟﻌﻤﻠﻴﺎﺕ‪ ،‬ﻤﻁﺒﻭﻋﺎﺕ ﺠﺎﻤﻌﺔ ﺤﻠﺏ ‪ ،2008‬ﺹ ‪. 345‬‬
‫‪ .7‬ﻨﺎﺌﺏ ﺇﺒﺭﺍﻫﻴﻡ‪ ،‬ﺒﺭﻫﺎﻥ ﻤﺤﻤﺩ ﻨﻭﺭ‪2003 ،‬ـ ﺃﺴﺎﺴﻴﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ‪،C++‬‬
‫ﺩﺍﺭ ﻭﺍﺌل‪ ،‬ﻋﻤﺎﻥ‪.‬‬
‫‪ .8‬ﻨﺎﺌﺏ ﺍﺒﺭﺍﻫﻴﻡ‪ ،‬ﺨﻭﺍﺭﺯﻤﻴﺔ ﺤﺎﺴﻭﺒﻴﺔ ﻟـﻀﻐﻁ ﺍﻷﻨـﺸﻁﺔ ﻓـﻲ ﺸـﺒﻜﺎﺕ ‪،CPM‬‬
‫)ﺍﻟﻤﺅﺘﻤﺭ ﺍﻟﻌﻠﻤﻲ ﺍﻟﺜﺎﻨﻲ ﻟﻌﻠﻭﻡ ﺍﻟﺤﻭﺴﺒﺔ ﻭﺘﻁﺒﻴﻘﺎﺘﻬﺎ‪ ،‬ﺠﺎﻤﻌﺔ ﺍﻟﻌﻠـﻭﻡ ﺍﻟﺘﻁﺒﻴﻘﻴـﺔ –‬
‫ﺍﻷﺭﺩﻥ ‪ ( 1998/9/22-21‬ﺹ ‪.222‬‬
‫– ‪9. BUDNICK F.S.; MCLEAVEY D. ;MOJENA R.-2004.‬‬
‫‪Principles Of Operations Research for Management -‬‬
‫‪A.I.T.B.S - New Delhi. Page 320.‬‬
‫‪10.DEITEL H. M., DEITEL P. J., 1994 - C: How to‬‬
‫‪Program - Prentice - hall.‬‬
‫‪11.HILLER F.; LIBERMAN G. J., 2001- Introduction To‬‬
‫‪Operations Research- Mc Graw-Hill - Boston Page 250..‬‬
‫‪12.JENSEN P.A.; BARD J., 2003-‬‬ ‫‪Operations‬‬ ‫‪Research‬‬
‫‪Models And Methods - John Wiley -N.J. Page 522.‬‬
[69] _____________ 2010 (18) ‫מא‬ ‫א‬ ‫א‬ ‫א‬

13.LEIGHTON F., 2006- Introduction to Parallel Algorithms


and Architecture: Arrays, Trees- Morgan Kaufmann- New
York. Page 488.
14.SHARMA J.K., 2004- Operations Research Theory and
Applications- Mac Milan- New Delhi.
15.STEWART LEE E., 2006- Algorithms and Data Structures
in Computer Engineering- Jones and Bartlett Publishers -
Boston.
16.TAHA H. A., 2005- Operations Research (An
Introduction) -Macmillan Publishing Co., Inc, 3Ed, New
York, page 425.

You might also like