28
A Neighborhood Search Algorithm for the Capacitated Minimum Spanning Tree Problem Authors Dr Jun Han Associate Professor of Computing Science Email: [email protected] Phone: +86 10 8231 6340 Fax: +86 10 8231 6796 Post: Mailbox 7-28 Beihang University Beijing 100083, P.R.China Dr Stephen Sugden Associate Professor of Mathematics Email: [email protected] Phone: +61 7 5595 3325 Fax: +61 7 5595 3320 Post: School of Information Technology Bond University Gold Coast, QLD 4229, Australia Dr Jinpeng Huai Professor of Computer Science Email: [email protected] Phone: +86 10 8231 4838 Fax: +86 10 8232 8058 Post: Mailbox 7-28 Beihang University Beijing 100083, P.R.China Zhaoguo Li Graduate student Beihang University Email: [email protected] Corresponding Author Dr Jun Han

A Neighborhood Search Algorithm for the Capacitated Minimum Spanning Tree Problem

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

A Neighborhood Search Algorithm for the Capacitated

Minimum Spanning Tree Problem Authors Dr Jun Han Associate Professor of Computing Science Email: [email protected] Phone: +86 10 8231 6340 Fax: +86 10 8231 6796 Post: Mailbox 7-28

Beihang University Beijing 100083, P.R.China

Dr Stephen Sugden Associate Professor of Mathematics Email: [email protected] Phone: +61 7 5595 3325 Fax: +61 7 5595 3320 Post: School of Information Technology Bond University Gold Coast, QLD 4229, Australia Dr Jinpeng Huai Professor of Computer Science Email: [email protected] Phone: +86 10 8231 4838 Fax: +86 10 8232 8058 Post: Mailbox 7-28

Beihang University Beijing 100083, P.R.China

Zhaoguo Li Graduate student Beihang University Email: [email protected] Corresponding Author Dr Jun Han

Abstract

This paper studies the capacitated minimum spanning tree problem, which is one of

the most fundamental and significant problems in the optimal design of

communication networks. A Neighborhood Search Algorithm is introduced and its

performance is presented. We show the advantages of the algorithm while illustrating

the process of searching for the optimal solution. Computational experiences

demonstrate the algorithm's effectiveness.

Introduction

In the capacitated minimum spanning tree problem the objective is to find a

minimum cost tree spanning a given set of nodes such that some capacity constraints

are observed. In terms of graph theory we consider a connected graph

with node set and arc set

),,,( cbAVG =

},...,1,0{ nV = A . Each node i in V has a unit node weight

with . The node weights may be interpreted as flow requirements

whereas a non-negative arc weight c represents the cost of using arc in

1=ib 00 =b

ij ),( ji A .

Node is a special node called center node and will be the root of the tree. We define

a rooted sub-tree (or component) of a tree spanning V as its maximal sub-graph

that is connected to the center by arc (which may be referred to as central arc).

The flow requirement of a sub-tree is the sum of the node weights of the included

nodes. To satisfy the capacity constraint the flow requirement of each sub-tree must

not exceed a given capacity

0

ir

),0( i

K . By means of these definitions the capacitated

minimum spanning tree (CMST) problem is the problem finding a minimum cost tree

spanning node set V where all sub-trees satisfy the capacity constraint.

2

Assume for all and 1=ib ni ,...,1= 0=ib for 0=i , then the CMST problem can be

described by a mixed integer linear programming formulation as presented below.

Define , if arc is included in the solution, and 1=ijx ),( ji 0=ijx , otherwise. Let

denote the flow on arc for

ijy

),( ji ni ,...,0= and nj ,...,1= . The following formulation

gives a minimum cost directed capacitated spanning tree with center node 0 being the

root:

)1( ∑∑= =

n

i

n

jijij xcMinimize

0 1

. .TS

)2( 10

=∑=

n

iijx nj ,...,1=

)3( 110

=−∑∑==

n

iji

n

iij yy nj ,...,1=

)4( ijiijij xbkyx ⋅−≤≤ )( ni ,...,0= nj ,...,1=

)5( }1,0{∈ijx 0≥ijy ni ,...,1= nj ,...,1=

Equality (2) ensures that exactly one arc is reaching each non-central node; the

coupling constraints (4) in combination with the flow conservation of (3) ensure that

no cycles are allowed and therefore a tree spanning all nodes is guaranteed.

Equality (3) tells that each non-center node absorbs one unit of flow. Inequality (4)

ensures that the capacity constraint is satisfied for each arc. When , ,

inequality (4) becomes

0=i 00 =b

jjj xkyx 000 ⋅≤≤ . For any node nj ,...,1= , if arc exists,

then , inequality (4) becomes

),0( j

10 =jx ky j ≤≤ 01 , and this restricts the flow on each

central arc to be from 1 to K ; if arc does not exist, then ),0( j 00 =jx , inequality (4)

3

becomes , and this implies 00 0 ≤≤ jy 00 =jy , which is true. When , ,

inequality (4) becomes

0≠i 1=ib

ijijij xkyx ⋅−≤≤ )1( . For any node , if arc

exists, then , inequality (4) becomes

nj ,...,1=

),( ji 1=ijx 11 −≤≤ kyij , and this restricts the

flow on each non-central arc to be from 1 to 1−K .

CMST has a great variety of applications, such as in the design of local access

networks, the design of minimum cost teleprocessing networks, the vehicle routing

and so on.

The capacitated minimum spanning tree problem is NP-hard when , as

proved by Papadimitriou in [14].

)2/(2 nk <<

A significant amount of research has been done in designing heuristics for solving

CMST problem. These achievements include construction procedures [15][16],

savings procedures [6][8][9], dual procedures [6], decomposition procedures [10],

constant error bounds procedures [4], Local exchange procedures [6][7], second order

procedures [9][13], node exchange procedures [17], etc. The latest works include

Gouveia and Martins’ hop-indexed models [11] [12] and Ahujia et al’s multi-

exchange neighborhood search algorithm [1]. From the next section, we will introduce

our neighborhood search algorithm for the undirected CMST problem.

1 The Initial Solution

The initial solution is generated by a modified Kruskal’s algorithm.

The algorithm starts from the center node, and chooses the cheapest arc spanning a

single tree. Let V be the candidate arc set, A be the solution arc set, S be the

solution node set, which stores the nodes already connected by the arcs in A .

4

The procedure in Figure 1 shows how the initial solution is constructed for an N-

node problem (excluding center node 0).

2 The Search Routines

Our neighborhood search algorithm is an improvement procedure, the basic idea of

which is that, we firstly find an initial solution, and then improve the solution by a

series of refining works. The performance of a neighborhood search algorithm

critically depends on the neighborhood structure, the manner in which we define

neighbors of a solution.

2.1 The Neighborhood Structure

Most previously developed neighborhood search algorithms perform a kind of

“node exchange” to find the neighborhood of existing solutions. However, the authors

prefer using a “sub-tree move” method to construct the neighborhoods.

{ }0=S =A φ

while number of nodes in S < N do = V 0V while V φ ≠0 do

= cheapest arc in V v 0

if exactly one end node of in v S and capacity constraint observed then include the other end node of in v S include in v A exclude from V v end if exclude from V v 0

end while-do end while-do

Figure 1 Constructing Initial Solution

5

Here, “move” means moving a sub-tree to another rooted sub-tree (component)

from the one it currently belongs to. For example, Figure 2 is a solution of a CMST

problem; if arc (3,7) is discarded and node 7 is connected to node 2, as shown in

Figure 3, we say that the sub-tree rooted at node 7 is moved from component to .

Thus a neighbor of the original solution in Figure 2 is obtained. For simple expression,

in the following context of this paper, the phrase “moving (or shifting) a node i to

node

3r 2r

j ” means cutting the sub-tree rooted at node i and connecting it to node j by

arc , and node ),( ji j is called the “destination node” of node i .

Compared with “exchange”, “move” is a one-way action; it does not require

another sub-tree be moved in the opposite direction. It also differs from “cycle

exchange”[3], where nodes are moved among components in a cyclic manner.

The reason for using “moves” to find neighbors is simply that, any “exchange” is

accomplished by multiple “moves”. By choosing and organizing simple moves, more

neighbors can be studied while none of the “exchanges” is missed.

2.2 The Advantages of Moving Sub-trees

The reasons for choosing moving sub-trees rather than single nodes are as follows.

Any Better Solution Can Be Found By Moving Sub-Trees

By moving sub-trees, we also would not miss the neighbors constructed by moving

3

10

Center Node

Node 1

r1 r2 r3

2

45 6 7 8

0

Figure 2 Example of Solution Tree

9 11 12 13 14 15 16

15

3

10

Center Node

Node 1

r1 r2r3

2

45 6 7 8

0

Figure 3 Moving a Subtree

9 11 12 13 14 16

6

single nodes. This is because that, moving a single node form one component to

another can be done by moving the sub-tree rooted at this node to the other

component, and moving the descendent sub-trees of this node back to the original

component.

For example, in Figure 2, if we intend to move node 7 only to , we can first move

the sub-tree rooted at node 7, as shown in Figure 3, then move the sub-trees rooted at

node 14 and 15 respectively back to , as shown in Figure 4.

2r

3r

If sufficient good moving regulations are followed, any better solution (if it exists)

can be found by moving sub-trees between different components (including empty

component----the case connecting a sub-tree to the center node).

Avoid Complicated Tasks

By always moving a complete sub-tree, we avoid doing complicated tasks brought

by breaking a sub-tree.

For example, in Figure 2, if we move only node 7 out of , much work has to be

done to arrange node 14 and node 15, and these works are significantly complicate.

Moreover, all nodes left in have to be considered actually, since normally a local

minimum spanning tree needs to be reconstructed and related data have to be updated.

3r

3r

Keep Local Optimality

Local optimality is kept if we don’t break the sub-tree to be moved.

8

15

3

10

Center Node

Node 1

r1 r2r3

2

45 6 7

0

Figure 5 Partial Initial Solution

9 11 12 13 14 16

8

15

3

10

Center Node

Node 1

r1 r2 r3

2

45 6 7

0

Figure 4 Moving a Single Node

9 11 12 13 14 16

7

In Figure 2, suppose arc (7,14) is the cheapest arc among all arcs reaching node 14,

arc (7,15) is the cheapest arc reaching node 15, then disconnecting node 14 and node

15 from node 7 and connecting them to other nodes will definitely cause an increase

in the total cost of the solution.

This is more often the case when the solution is already very good. In other words,

as the solution is getting closer to the optimal solution, it is more likely that more

nodes have been linked in a more reasonable way. So, in the search process, when we

consider that we may get a cheaper cost solution by moving a node, we would rather

move the whole sub-tree rooted at this node, in order to avoid doing complicated

works that most probably will not lead to a better solution.

Fast Computation

The total cost of a solution has to be always monitored in the entire search process,

and with each sub-tree move, the change of the solution cost is exactly the difference

of the costs between two arcs. For example, in Figure 2, if node 7 is moved to node 2,

then the change of the total cost is just the difference between and . It is also

quick to change the topology of the tree by just changing an arc, no matter what kind

of data structure used. This has great significance for the related computations.

2,7c 3,7c

2.3 The Sub-Tree Move

There are many ways to perform the sub-tree move and certainly we prefer ways

that are more robust, or in another word, efficient. To find an efficient method, which

leads to better solutions in less iteration, the following aspects are considered.

Sequence of Nodes Being Added to the Initial Solution

8

Nodes are added to the initial solution in a sequence. Due to the way the initial

solution is constructed, we consider that nodes being added earlier have less chance to

be connected to a nearer ancestor.

Definition We say node j is nearer to node i if the cost of arc is cheaper than

arc where k is one of some other nodes. We define node

),( ji

),( ki j to be the nearest

node of node i if arc is the cheapest arc among all arcs reaching node . ),( ji i

Suppose the tree in Figure 2 is an initial solution of a certain problem, node 3 is the

first node being added to the initial solution.

According to the greedy initial solution generation algorithm, node 3 is the nearest

node of node 0, this means arc (0, 3) is the cheapest arc among all arcs reaching node

0. However, node 0 may not be the nearest node of node 3, that is, arc (0, 3) may not

be the cheapest arc reaching node 3.

Suppose node 1 is the second nearest node of node 0 and arc (0,1) is cheaper than

arc (1,3); then, the algorithm will connect node 1 to node 0.

Suppose the sequence of the nodes from the nearest to the furthest to node 3 is as

follows:

{4, 5, 9, 10, 11, 6, 12, 13, 7, 8, 14, 15, 16, 1, 2, 0} (6)

We make the following assumptions:

The third nearest node to node 0 is node 2.

The nearest node to nodes 2 is node 6.

The first two nearest nodes to node 1 are nodes 4 and 5.

The first two nearest nodes to node 1 are nodes 12 and 13.

The first three nearest nodes to node 4 are nodes 9, 10, and 11.

9

Arcs (0,2), (1,4), (1,5), (9,4), (10,4), (11,4), (2,6), (12,6) and (13,6) are cheaper

than arcs (2,3), (4,3), (5,3), (9,3), (10,3), (11,3), (6,3), (12,3) and (13,3)

respectively.

Then, following the initial solution generation algorithm, the next 9 nodes added

are nodes 2, 4, 5, 6, 9, 10, 11, 12 and 13, as shown in Figure 5.

We can see that none of the first 8 nodes in (6) can be connected to node 3, since

that will create a cycle.

On the other hand, a node being added to the initial solution later has more chance

to be connected to a nearer ancestor. Suppose in Figure 2, node 16 is the last node

added to the solution. Then, node 8 must be its nearest node (otherwise the modified

Dilkstra’s algorithm will not choose to connect node 16 to node 8, but node 16’s

nearest node i , since arc ( , 6) is cheaper than arc (8,16)). This is not true only if

node i is in a rooted sub-tree that is full (the central arc has reached its capacity).

i

Therefore, moving a node that was included in the solution earlier, will generally

lead to a greater decrease in the solution cost.

Level of Nodes

We define the level of a leaf node in a solution tree to be 0 (lowest level), and if a

node is in level l , then its parent node is in level 1+l . If a node has more than one

level value by counting from different leaves, we define the greater one to be its level.

Figure 6 shows the level (in brackets) of some nodes in Figure 2.

This definition is totally different from the traditional one, in which the “level” of

nodes in a tree is defined from top to bottom with the root being in level 0, and its

children being in level 1 etc. This is because it is concerned here how far a node is

from the leaves, but not from the root.

10

We assume that, by moving nodes in lower level first, the procedure will do less

work before no possible improvement can be performed, because it is considered

helpful that it is locally as optimal as possible when moving a sub-tree.

Profit of Moving Nodes

Definition The “profit” of moving a node is the decrease in cost brought by moving

the node to its destination node from its current parent node.

Let the parent node of node i be node , the destination node (which is more

nearer to node i ) of node i be node , then the profit of moving node i to node

is .

ia

id id

ii diaii ccp ,, −=

Let the parent node of node j be node , the destination of node ja j be node ,

then the profit of moving node

jd

j to node is jdjj diaij ccp ,, −= .

We say moving node is more profitable than moving node i j if is less than .

Obviously, moving a node that is more profitable will lead to a better solution, if

feasible.

ip jp

2.4 The Successful Sub-Tree Move

We first emphasize some important rules in the sub-tree move process by

answering the following questions.

Q1. Can A Node Be Moved Within A Rooted Sub-tree?

According to the Modified Dijkstra’s Algorithm introduced in section 1, in the

initial solution, it is easy to prove that each rooted sub-tree is already a minimum cost

tree spanning all nodes in this component, therefore moving nodes within a

component is worthless.

11

But when a sub-tree is moved into a component, this destination component may no

longer be a minimum spanning tree. In this case, this component is adjusted to a

minimum spanning tree. This MST adjustment is not performed in the sequence

priority search procedure, which will be introduced in Section 3, since otherwise the

nodes will lose their sequence property, according to which the searching is

performed.

Q2. What To Do If A Move Leads To An Infeasible Solution?

When a move causes the destination component containing too many nodes, one or

more sub-trees have to be moved out to make the component feasible. There are two

main concerns when deciding which node to be moved out. One is the profit of

moving the node; the other is the feasibility after moving the node. We consider that

making the solution feasible is more important. Thus the following rule is applied

when choosing the node to be moved out:

In the infeasible component, we move out the sub-tree containing the least number

of nodes and at the same time making the component feasible after being moved out.

For example, in Figure 6, if node 6 is moved out of and is connected to node 3,

the new tree will be as shown in Figure 7.

2r

Suppose the capacity constraint K equals 7, then, the maximum number of nodes

in any component is 7. In Figure 7, there are 9 nodes in component , but the 3r

14(0)

2(2)

8

15

3(2)

10

Center Node

Node 1(2)

r1 r2 r3

4(1) 5(0) 6(1) 7(1)

0

Figure 6 Level of Nodes

9 11 12 13 16

14(0)

2(2)

8

15

3(2)

10

Center Node

Node 1(2)

r1 r2r3

4(1)5(0) 6(1) 7(1)

0

Figure 7 Choosing an Out Node

9 11 12 13 16

12

capacity constraint is 7, so at least 2 nodes have to be moved out of to make this

component feasible.

3r

In , We can move out node 7, node 8 or node 3, because the number of nodes in

the sub-trees rooted at these nodes are 3, 2 and 9 respectively and are all greater than

or equal to 2. Since the sub-tree rooted at node 8 contains the least number of nodes (2

nodes), we choose to move out node 8 to look for a lower possibility of getting an

infeasible solution after moving node 8 into other components.

3r

Q3. Can A Node Be Moved Back To Its Original Component?

In order to make sure that no endless moving cycles occur, a node cannot be moved

back into its original component.

For clear interpretation, the following expressions will be used in the later context.

“Shift”: given a certain node i and its destination node j , “shift” node i to j

refers to the single moving action, in which the sub-tree rooted at node i is cut and

connected to node j in another component by arc . ),( ji

“Move”: given a certain node i and its destination node j , one “move” refers to

not only the action of shifting node i to node j , but also the consequent node shifting

for looking for a feasible solution, if shifting node i to node j makes the solution

infeasible.

“Successful move”: if one move finds a feasible better solution before the

termination criterion is satisfied, we say this move is a successful move.

“Importer (exporter)”: if a node has been moved in (out of) a component, we say

this component has been changed, and has acted as an importer (exporter).

Regarding Q3, the actual rule in the searching process is that, a node can be moved

into a changed component, which has act as an exporter, only if this single import

13

action makes the solution feasible and therefore ends a successful move. After all

components have been changed, a move is forced to terminate whether it is successful

or not.

2.5 The Move Procedure

Suppose we are going to move node i to node j , we call node i the “Origin Node”,

and node j the “Destination Node”. We also call a node “Out Node” if the sub-tree

rooted at this node is chosen to move out of its current component.

Once an “Origin Node” is chosen, Function Move(OriginNode) in Figure 8 shows

the basic procedure for moving this node. It returns true if a successful move is

performed.

Suppose the total number of nodes in the current component is R , the capacity

constraint is K , in (1), “qualified out node” is a node with at least M descendant

nodes, where 1−−= KRM . This ensures that moving out a “qualified out node” can

leave no more than K nodes in the component; therefore, the component is locally

feasible.

By “the most qualified out node”, we mean the node with the smallest value of M .

So, the out node is chosen in the order of ascending M value.

It can be seen from Figure 8 that, Move(OriginNode) is a recursive function.

Move(OriginNode): Boolean for DestinationNode ← OriginNode’s nearest node to OriginNode’s furthest node do Shift OriginNode to DestinationNode if they are not in the same rooted sub-tree if Current total cost >= Total cost of existing solution then Stop. Unsuccessful Move else if feasible then Stop. Successful Move else if the first time changing the rooted sub-tree containing DestinationNode then for OutNode←Most qualified out node in the rooted sub-tree

to the most unqualified out node (1) do if move (OutNode) then Stop. Successful Move end if end if

Figure 8 Basic Sub-tree Move Procedure

14

3 The Algorithm

As introduced in section 2.3, we consider nodes are different in three aspects, the

sequence of being added to the solution, the level value and the potential profit of

moving the nodes. Based on the basic move function presented in section 2.5, four

algorithms for the CMST problem are developed.

Sequence Priority Search

Let N be the problem size, that is, the total number of nodes (excluding center

node).

After constructing the initial solution, all nodes are stored in an array

NodeSequence[1..N] in the order of the sequence being linked to the solution tree.

NodeSequence[1] is the first node linked to the center, and NodeSequence[N] is the

last node spanned.

The sequence priority search procedure is as follows:

for OriginNode ← NodeSequence[1] to NodeSequence[N]

do Move(OriginNode)

Level Priority Search

Let “UnSuccess” stores the number of successive times of unsuccessful move, L be

the current active level, the level priority search procedure is shown in Figure 9.

Line (1) shows the termination condition. For N-node problem, if N times of

successive unsuccessful move have been performed, then we know no improved

solution can be found by moving any of the nodes.

15

UnSuccess←0 while UnSuccess < N (1)

do Get the highest level value “HighestLevel” (2) L ← 0 while L <= HighestLevel do Open all nodes (3) while not all nodes with level L closed (4) do find the PriorityNode with level L (5) if Move (PriorityNode) (6)

then UnSuccess←0 (7) Get the highest level value (8)

else UnSuccess← UnSuccess+1 (9) Close the node (10)

end if end while do

L ← L+1 (11) end while do end while do

Figure 9 Level Priority Search Procedure

In (5), “PriorityNode” is defined to be the node that has the longest distance to its

nearest node in other rooted sub-trees. Here, the “distance” of two nodes means the

change of the cost when shifting one node to the other. So, “PriorityNode” is actually

the most “profitable” node.

Since the topology of the tree changed after a successful move, and nodes may have

new level values, in (8), we find the new highest-level value among all nodes.

In (9) and (10), if a node leads to an unsuccessful move, it is closed.

If all nodes with level L are closed, in (11), L is increased by 1.

It needs to be pointed out that, in Figure 9, the status “open” and “close” of nodes

only apply to the process of finding “PriorityNode”, but not to the Move() function.

That is, all nodes are open in the “Move()” function call.

Profit Priority Search

The profit priority search procedure is shown in Figure 10.

16

while Runtime < GivenTime (1) do Open all pairs of nodes while Not all pairs of nodes closed do Find the PriorityNode Find the DestinationNode of the PriorityNode Move1(PriorityNode, DestinationNode ) (2) if Successful

then Close the node pair (PriorityNode, DestinationNode)

Figure 10 Profit Priority Search Procedure

Same as in the level priority search procedure, “PriorityNode” is the node which

has the longest distance to its nearest node in other rooted sub-trees; “open” and

“close” only apply to finding a “PriorityNode”.

“DestinationNode” is PriorityNode’s nearest node in other rooted sub-trees.

In (1), a given running time is used as the termination criterion, since all nodes are

opened again once they have been all closed.

In (2), function Move1 performs one shift from the “PriorityNode” to the

“DestinationNode”, and then calls the basic Move(OriginNode) function, in which all

possible destination nodes are considered.

Random Search Procedure

Besides the above three procedures, we would also like to implement a random

search procedure.

All properties of the nodes are disregarded and the nodes are just arranged in a

random sequence. Then the basic Move(OriginNode) function is called with respect to

this node sequence.

We assumes that the random search procedure may find better solutions in some

instances. But generally, the first three procedures will perform better, since the

author considers that they are more robust due to the analyses in the previous sections.

Figure 11 shows how the random search procedure is performed.

17

while Runtime < GivenTime (1) do UnSuccess←0 while UnSuccess < N do Generate array RandomSequence[1..N] (2) for i ← 1 to N do if Move (RandomSequence[i] )

then UnSuccess←0 else UnSuccess← UnSuccess+1

Figure 11 Random Search Procedure

Since large number of sequences can be generated randomly, a specific running

time has to be used as the termination condition in (1).

Same as in the level priority search procedure, “UnSuccess” is the number of

successive times of unsuccessful move. “UnSuccess” being greater than the problem

size N is the termination condition for the searching with regard to one random node

sequence.

(2) generates a random sequence of the N nodes and store them in the array

“RandomSequence[1..N]” in order.

4 Computational Experiences

In this section the performances of the neighborhood search algorithms is presented.

All experiments regarding these algorithms were performed on a machine with

Pentium II 400MHz CPU, 128MB RAM, and the application programs were run on

Windows 95 operating system.

4.1 Comparisons of the Four Searching Procedures

OR-Library (http://mscmga.ms.ic.ac.uk/info.html), established by the Operation

Research Center of Imperial College in U.K., is a collection of test data sets for a

variety of operations research problems.

18

The popular benchmark CMST problems in OR-Library are used to test the

algorithms.

Table 1 is the results of implementing Sequence Priority Search, Level Priority

Search and Profit Priority Search procedures for solving one set of 41-node problems.

The capacity constraint is 10.

In Table 1, as well as in all other tables, the “optimal solution” refers to the optimal

solution found by the authors’ exact algorithms.

“N.S.M.” is the total number of successful moves.

It can be seen from Table 1 that, the running time before termination of the

Sequence Priority Search procedure is less than that of the Level Priority Search

procedure. However, the Sequence Priority Search procedure missed the optimal

solution for two problems, while the Level Priority Search procedure only missed one.

The Profit Priority Search procedure was run for 1 second, and it found the optimal

solutions for four problems from the five.

To test its performance, the Random Search procedure was run ten times for each

of the problems in Table 1, and the results are shown in Table 2.

From Table 2, we can see that the Random Search procedure found the optimal

solution for each problem within 10 runs. It even found the optimal solution for the

fifth problem, while none of the three procedures in Table 1 achieved so.

4.2 The Integrated Search Procedure

It can be seen from the above experiments that, as we have expected when

designing these algorithms, each algorithm has both advantages and disadvantages

compared with others. Therefore, we would integrate these search procedures into one

program, as shown in Figure 12.

19

Sequence priority search Level priority search Profit priority search while Runtime < Given time

Do Random search end while do Figure 12 The Integrated Procedure

Table 3 is the test results of the Integrated Procedure for solving one set of 100-

node problems.

To discover the actual efficiency of the new algorithm when it is implemented in

practice, a time limit will not be used to terminate the procedure in this experiment.

Instead, the “Percentage Error” is used as the termination criterion. Percentage Error

is calculated as the following:

(Neighborhood Search solution cost-Optimal solution cost)/ Optimal solution cost.

Since the optimal solutions for these problems are already known by running the

authors’ exact algorithm, we let the integrated neighborhood search procedure

terminate when the best solution cost found is no more than 0.5% higher than the

optimal solution cost.

Table 3 shows that the neighborhood search algorithm can find optimal or near

optimal solutions for these problem in a time period from 5 seconds to 300 seconds,

while the exact algorithm run on an average of 12,000 seconds to find the optimal

solution.

4.3 Comparisons with Other Algorithms

It has to be pointed out that comparability is not guaranteed in all cases, since

different authors have proposed various ways of conducting experiments. To the

capacitated minimum spanning tree problem, instances with larger value of capacity

constraint K will be easier to solve. Moreover, if we locate all nodes in the two-

dimensional Euclidean plane and use the Euclidean distance between two nodes as the

20

cost of the arc between them, we say the root is “in the center” or “in the corner”

when its location is in the center of the Euclidean plane or in the corner of the

Euclidean plane. Another parameter, which has considerable impact on the

performance of most algorithms, is the location of the root. For problem instances in

OR-Library, class “tc” refers to problems with the root in the center of the Euclidean

plane and class “te” refers to problems with the root in the corner of the Euclidean

plane. It is believed that “tc” class problems are relatively “easier” to be solved than

“te” class problems.

The best published heuristics for the capacitated minimum spanning tree problem is

Ahuja et al’s Multi-exchange Neighborhood Search algorithm [1]. As the most recent

lower bound algorithms, Gouveia and Martins’ hop-indexed models [11] [12] have

the best overall performances. Referring to the benchmark problems in OR-Library,

Ahuja et al’s algorithm and Gouveia and Martins’ algorithm found the same solutions

for all “tc” class problems in similar computational time; but Ahuja et al’s algorithm

found better solutions for 3 “te” class problems in much less computational time.

Table 4 and 5 are comparisons of the Integrated Neighborhood Search algorithm

and the Multi-exchange Neighborhood Search algorithm.

The problems in table 4 are the 41-node “tc” class benchmark problems in OR-

Library, and the problems in Table 5 are the 41-node “te” class problems. The

capacity constraint is 10.

The program for the Multi-exchange Neighborhood Search algorithm was run on a

DEC Alpha computer.

It can be seen from Table 4 that, the Integrated Neighborhood Search algorithm is

faster when solving the “tc” class problems. For the “te” class problems however, it

21

has to run 1000 seconds to get the same solutions found by the Multi-exchange

Neighborhood Search algorithm. This is shown in Table 5.

The latest achievement is Ahuja et al’s Composite Very Large-scale Neighborhood

Structure for the CMST problem [2].

Table 6 is a comparison of the Integrated Neighborhood Search algorithm and the

Composite Very Large-scale Neighborhood Search algorithm for solving the 81-node

“tc” class benchmark problems in OR-Library.

Table 7 is the comparison of the two algorithms for solving the 81-node “te” class

problems. The capacity constraints are both 20 in these two tests.

The Composite Very Large-scale Neighborhood Search algorithm was tested on a

Pentium 4 processor with 512 MB RAM and 256KB L2 cache, while the author’s

programs were run on a machine with Pentium II CPU and 128 MB RAM.

From Table 6, we can see that the Integrated Neighborhood Search algorithm is

sufficiently faster to find the currently known best solutions.

However, Table 7 shows that for the “te” class problems, the Integrated

Neighborhood Search algorithm could not find solutions as good as those found by

the Composite Very Large-scale Neighborhood Search algorithm in the same time

period.

4.4 Analyses of the Neighborhood Search Algorithms

For the CMST problems maintained in OR-Library, it is considered that, the “tc”

class problems are relatively “easier” to be solved than the “te” class problems.

From the test results shown in section 4.3, it is noticed that the authors’

neighborhood search algorithm, compared with other algorithms, performs better for

“easier” problems, but worse for relatively “harder” problems. We consider that the

reasons are as follows.

22

According to the search routines introduced in the previous sections, the authors’

algorithm is concerned very much with the characteristics of current and consequent

solutions and makes effort on fast improving of the initial solution.

In the Multi-exchange Neighborhood Search algorithm and the Composite Very

Large-scale Neighborhood Search algorithm, much work is done to construct the

“improvement graph” and find the “valid cycles”, which are node exchanges leading

to better solutions.

Therefore, the authors’ neighborhood search algorithm is faster, but may not find

solutions as good as those found by the other two algorithms, since it does not

perform those precise “valid cycle” detections.

The authors’ neighborhood search algorithm has the same complexity with the

Composite Very Large-scale Neighborhood Search algorithm, which is ,

where is the problem size and

))/(( rrnΟ

n r is the total number of rooted sub-trees.

Since in the Integrated Neighborhood Search algorithm, the basic procedure is a

recursive function, the authors’ computer will run out of memory if the capacity

constraint is very small and therefore the r value is very large.

5 Summary

We have proposed a neighborhood search algorithm for the capacitated minimum

spanning tree problem and have presented the comparisons between different

algorithms. We introduced a series of new sub-tree move procedures, interpreted their

principles and analyzed their advantages. Computation experiences show that the

proposed procedures perform better than existing algorithms for relatively easier

problem. There is room for further improvement in our future work, especially in

dealing with relatively harder CMST problems.

23

References

[1] Ahuja, R.K., Orlin, J.B. and Sharma, D. (2001). Multi exchange neighborhood

search algorithms for the capacitated minimum spanning tree problem. Mathematical

Programming 91: 9-39.

[2] Ahuja, R.K., Orlin, J.B. and Sharma, D. (2001). A composite neighborhood search

algorithm for the capacitated minimum spanning tree problem. Working paper.

[3] Ahuja, R.K., Orlin, J.B. and Sharma, D. (2000). “Very large-scale neighborhood

search”. Operational Research 7: 301-317.

[4] Altinkemer, K. and Gavish, B. (1988). Heuristics with constant error guarantees

for the design of tree networks. Management Science 32: 331 - 341.

[5] Amberg, A., Domscheke, W. and Braunschweig, S. (1996). Capacitated Minimum

Spanning Trees: Algorithms using intelligent search. Combinatorial optimization:

Theory and Practice 1: 9-39.

[6] Elias, D. and Ferguson, M.J. (1974). Topological design of multipoint

teleprocessing networks. IEEE Transactions on Communications 22: 1753 - 1762.

[7] Frank, H., Frisch, I.T., Van Slyke, R. and Chou, W.S. (1971). Optimal design of

centralized computer design network. Networks 1: 43-57.

[8] Gavish, B. (1991). Topological design of telecommunication networks-local

access design methods. Annals of Operations Research 33: 17-71.

[9] Gavish, B. and Altinkemer, K. (1986). Parallel savings heuristics for the

topological design of local access tree networks. Proc. IEEE INFOCOM 86

Conference: 130-139.

24

[10] Gouveia, L. and Paixao, J. (1991). Dynamic programming based heuristics for

the topological design of local access networks. Annals of Operations Research 33:

305-327.

[11] Gouveia, L. and Martins, P. (1999). The capacitated minimum spanning tree

problem: An experiment with a hop-indexed model. Ann Oper Res 86: 271-294.

[12] Gouveia, L. and Martins, P. (2000). A hierarchy of hop-indexed models for the

capacitated minimum spanning tree problem. Networks 35: 1-16.

[13] Karnaugh, M. (1976). A new class of algorithms for multipoint network

optimization. IEEE Transactions on Communications 24: 500-505.

[14] Papadimitriou, C.H. (1978). The Complexity of the capacitated tree problem.

Networks 8: 217-230.

[15] Schneider, G.M. and Zastrow, M.N. (1982). An algorithm for the design of

multilevel concentrator networks. Computer Networks 6: 1-11.

[16] Sharma, R.L. and El-Bardai, M.T. (1970). Suboptimal communications network

synthesis. Proc. 1970 Int. Conf. Comm. 19: 11-16.

[17] Thangiah, S.R., Osman, I.H. and Sun, T. (1994). Hybrid genetic algorithms,

simulated annealing and tabu search methods for vehicle routing problems with time

windows. Working Paper, Univ. of Kent, Canterbury.

25

Table 1 Comparisons of the Three Algorithms

Sequence Priority Search Level Priority Search Profit Priority Search Problem

Name

Optimal

Solution Solution N.S.M Run Time(seconds) Solution N.S.M Run Time

(seconds) Solution N.S.M Run Time(Seconds)

tc41-1 498 498 4 0.03 498 3 0.2 498 5 1

tc41-2 490 490 5 0.03 490 6 0.13 490 5 1

tc41-3 500 508 8 0.03 500 8 0.03 500 4 1

tc41-4 512 512 5 0.03 512 7 0.09 512 4 1

tc41-5 504 522 7 0.03 522 5 0.16 514 8 1

Table 2 Tests Results of Random Search Procedure

tc41-1 tc41-2 tc41-3 tc41-4 tc41-5

Optimal Solution 498 490 500 512 504

1st Run 498 500 516 518 514

2nd Run 502 500 522 512 528

3rd Run 502 490 524 513 522

4th Run 498 500 518 518 520

5th Run 502 500 514 518 528

6th Run 502 490 508 513 530

7th Run 502 500 518 518 525

8th Run 502 500 522 518 504

9th Run 502 500 514 512 514

10th Run 498 500 500 518 520

26

Multi-Exchange Algorithm Integrated Neighborhood Search Algorithm Problem

Name

Optimal

Solution Solution Run Time Solution Run Time

tc41-1 498 498 498

tc41-2 490 490 490

tc41-3 500 500 500

tc41-4 512 512 512

tc41-5 504 504

100

Seconds

504

1

Second

Multi-Exchange Algorithm Integrated Neighborhood Search Algorithm Problem

Name

Solution Run Time Solution Run Time

te41-1 596 596

te41-2 573 573

te41-3 568 568

te41-4 596 598

te41-5 572

100

Seconds

572

1000

Seconds

Table 5 Comparison of the Two Algorithms for Solving “te” Class Problems

Table 4 Comparison of the Two Algorithms for Solving “tc” Class Problems

Table 3 Tests Results of Integrated Neighborhood Search Procedure

Problem Name Optimal Solution Neighborhood

Search Solution Error Percentage Time used (second)

P100-1 7087 7117 0.4% 5

P100-2 6133 6138 0.1% 200

P100-3 4759 4759 0% 10

P100-4 7554 7594 0.5% 100

P100-5 6635 6635 0% 300

27

Table 6 Comparison of the Two Algorithms for Solving “tc” Class Problems

Composite Very Large-Scale Neighborhood Search

Integrated Neighborhood

Search Algorithm Problem

Name Solution Run Time Solution Run Time

tc81-1 834 834

tc81-2 820 820

tc81-3 828 828

tc81-4 820 820

tc81-5 916

1800

Seconds

916

10

Seconds

Table 7 Comparison of the Two Algorithms for Solving “te” Class Problems

Composite Very Large-Scale Neighborhood Search

Integrated Neighborhood Search Algorithm Problem

Name

Solution Run Time Solution Run Time

te81-1 1275 1290

te81-2 1225 1235

te81-3 1267 1273

te81-4 1265 1280

te81-5 1240

1800

Seconds

1800

Seconds

1240

28