examples for discrete constraint programming l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Examples for Discrete Constraint Programming PowerPoint Presentation
Download Presentation
Examples for Discrete Constraint Programming

Loading in 2 Seconds...

play fullscreen
1 / 58

Examples for Discrete Constraint Programming - PowerPoint PPT Presentation


  • 229 Views
  • Uploaded on

Examples for Discrete Constraint Programming. Belaid MOA UVIC, SHRINC Project. Examples. Map coloring Problem Cryptarithmetic N-queens problem Magic sequence Magic square Zebra puzzle Uzbekian puzzle A tiny transportation problem Knapsack problem graceful labeling problem.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Examples for Discrete Constraint Programming' - Sophia


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
examples for discrete constraint programming

Examples for Discrete Constraint Programming

Belaid MOA

UVIC, SHRINC Project

examples
Examples
  • Map coloring Problem
  • Cryptarithmetic
  • N-queens problem
  • Magic sequence
  • Magic square
  • Zebra puzzle
  • Uzbekian puzzle
  • A tiny transportation problem
  • Knapsack problem
  • graceful labeling problem
map coloring problem mcp
Map Coloring Problem (MCP)
  • Given a map and given a set of colors, the problem is how to color the map so that the regions sharing a boundary line don’t have the same color.
map coloring problem mcp4
Map Coloring Problem (MCP)
  • MCP can be viewed as a graph coloring problem:

a

b

b

c

a

d

c

d

modeling mcp
Modeling MCP
  • MCP can be Modeled as a CSP:
    • A set of variables representing the color of each region
    • The domain of the variables is the set of the colors used.
    • A set of constraints expressing the fact that countries that share the same boundary are not colored with the same color.
modeling mcp6
Modeling (MCP)

b

d

a

c

e

f

g

  • Example - Australia
    • Variables = {a,b,c,d,e,f,g}
    • Domain = {red, blue, green}
    • Constraints:
      • a!=b, a!=c
      • b!=c, b!=d
      • c!=e, c!=f
      • e!=d, e!=f
coding mcp
Coding MCP
  • OPL studio - Ilog Solver: 54 solutions found

enum Country={a,b,c,d,e,f,g};

enum Color = {red, green, blue};

var Color color[Country];

solve{

color[a]<>color[b];color[a]<>color[c];

color[b]<>color[c];color[b]<>color[d];

color[c]<>color[e];color[c]<>color[f];

color[e]<>color[d];color[e]<>color[f];

color[b]<>color[c];color[b]<>color[d];

};

coding mcp9
Coding MCP
  • ECLiPSe

:- lib(fd).

coloured(Countries) :-

Countries=[A,B,C,D,E,F,G],

Countries :: [red,green,blue],

ne(A,B), ne(A,C),

ne(B,C), ne(B,D),

ne(C,E), ne(C,F),

ne(E,D), ne(E,F),

labeling(Countries).

ne(X,Y) :- X##Y.

cryptarithmetic
Cryptarithmetic
  • The problem is to find the digits corresponding to the letters involved in the following puzzle:

SEND

+

MORE

MONEY

cryptarithmetic modeling
Cryptarithmetic Modeling
  • A CSP model for Cryptarithmetic problem:
    • Variables={S,E,N,D,M,O,R,Y}
    • Domain={0,1,2,3,4,5,6,7,8,9}
    • Constraints
      • The variables are all different
      • S!=0, M!=0
      • S*103+E*102+N*10+D {SEND}

+ M*103+O*102+R*10+E {MORE}= M*104+O*103+N*102+E*10+Y {MONEY}

coding cryptarithmetic
Coding Cryptarithmetic
  • OPL Studio - ILog Solver

enum letter = {S,E,N,D,M,O,R,Y};

range Digit 0..9;

var Digit value[letter];

solve{

alldifferent(value);

value[S]<>0;

value[M] <>0;

value[S]*1000+value[E]*100+value[N]*10+value[D]+

value[M]*1000+value[O]*100+value[R]*10+value[E]

= value[M]*10000+value[O]*1000+value[N]*100+value[E]*10+value[Y]

};

coding cryptarithmetic15
Coding Cryptarithmetic
  • ECLiPSe

:- lib(fd).

sendmore(Digits) :-

Digits = [S,E,N,D,M,O,R,Y],

Digits :: [0..9],

alldifferent(Digits),

S #\= 0,

M #\= 0,

1000*S + 100*E + 10*N + D

+ 1000*M + 100*O + 10*R + E

#= 10000*M + 1000*O + 100*N + 10*E + Y,

labeling(Digits).

n queens problem
N-Queens Problem
  • The problem is to put N queens on a board of NxN such that no queen attacks any other queen.
  • A queen moves vertically, horizontally and diagonally
modeling n queens problem
Modeling N-Queens Problem
  • The queens problem can be modeling via the following CSP
    • Variables={Q1,Q2,Q3,Q4,...,QN}.
    • Domain={1,2,3,…,N} represents the column in which the variables can be.
    • Constraints
      • Queens not on the same row: already taken care off by the good modeling of the variables.
      • Queens not on the same column: Qi != Qj
      • Queens not on the same diagonal: |Qi-Qj| != |i-j|
coding n queens problem
Coding N-Queens Problem
  • OPL Studio - ILog Solver

int n << "number of queens:";

range Domain 1..n;

var Domain queens[Domain];

solve {

alldifferent(queens);

forall(ordered i,j in Domain) {

abs(queens[i]-queens[j])<> abs(i-j) ;

};

};

coding n queens problem21
Coding N-Queens Problem
  • ECLiPSe

:-lib(fd).

nqueens(N, Q):-

length(Q,N),

Q::1..N,

alldifferent(Q),

( fromto(Q, [Q1|Cols], Cols, []) do

( foreach(Q2, Cols), param(Q1), count(Dist,1,_) do

Q2 - Q1 #\= Dist, Q1 - Q2 #\= Dist

)

),

search(Q).

search([]).

search(Q):-

deleteff(Var,Q,R),

indomain(Var), search(R).

magic sequence problem
Magic sequence problem
  • Given a finite integer n, the problem consists of finding a sequence S = (s0,s1,…,sn), such that si represents the number of occurrences of i in S.
  • Example:
    • (2, 0, 2, 0)
    • (1,2,1,0)
modeling msp
Modeling MSP
  • MSP can be modeled by the following CSP
    • variables: s0,s1, …,sn-1
    • Domain:{0,1,…,n}
    • constraints:
      • number of occurences of i in (s0,s1, …,sn-1) is si.
      • Redundant constraints:
        • the sum of s0,s1, …,sn-1 is n
        • the sum of i*Si, i in [0..n-1] is n
coding msp
Coding MSP
  • OPL - ILog Solver

int n << "Number of Variables:";

range Range 0..n-1;

range Domain 0..n;

int value[i in Range ] = i;

var Domain s[Range];

solve {

distribute(s,value,s); //global constraint s[i]=sum(j in Range)(s[j]=i)

sum(i in Range) s[i] = n; //redundant constraint

sum(i in Range) s[i]*i = n; //redundant constraint

};

coding msp26
Coding MSP
  • ECLiPSe

:- lib(fd).

:- lib(fd_global).

:- lib(fd_search).

solve(N, Sequence) :-

length(Sequence, N),

Sequence :: 0..N-1,

( for(I,0,N-1),

foreach(Xi, Sequence),

foreach(I, Range), param(Sequence) do

occurrences(I, Sequence, Xi)

),

N #= sum(Sequence), % two redundant constraints

N #= Sequence*Range,

search(Sequence, 0, first_fail, indomain, complete, []).%search procedure

magic square problem
Magic square problem
  • A magic square of size N is an NxN square filled with the numbers from 1 to N2 such that the sums of each row, each column and the two main diagonals are equal.
  • Example:
modeling magic square pb
Modeling Magic square pb
  • Magic square problem can be viewed as a CSP with the following properties:
    • Variables: the elements of the matrix representing the square
    • Domain: 1..N*N
    • Constraints:
      • magic sum = sum of the columns = sum of the rows = sum of the down diagonal = sum of the up diagonal
      • Remove symmetries
      • Redundant constraint:
        • magic sum = N(N2+1)/2
coding magic square pb
Coding Magic square pb
  • OPL Studio:

int N << "The length of the square:";

range Dimension 1..N;

range Values 1..N*N;

int msum = N*(N*N+1)/2; //magic sum

var Values square[1..N,1..N];

solve {

//The elements of the square are all different

alldifferent(square);

//the sum of the diagonal is magic sum

msum = sum(i in Dimension)square[i,i];

//the sum of the up diagonal is magic sum

coding magic square pb30
Coding Magic square pb

msum = sum(i in Dimension)square[i,N-i+1];

//the sum of the rows and columns are all magic sum

forall(i in Dimension){

msum = sum(j in Dimension)square[i,j];

msum = sum(k in Dimension)square[k,i];

};

//remove symmetric behavior of the square

square[N,1] < square[1,N];

square[1,1] < square[1,N];

square[1,1] < square[N,N];

square[1,1] < square[N,1];

};

coding magic square pb32
Coding Magic square pb
  • ECLiPSe:

:- lib(fd).

magic(N) :-

Max is N*N,

Magicsum is N*(Max+1)//2,

dim(Square, [N,N]),

Square[1..N,1..N] :: 1..Max,

Rows is Square[1..N,1..N],

flatten(Rows, Vars),

alldifferent(Vars),

coding magic square pb33
Coding Magic square pb

%constraints on rows

(

for(I,1,N),

foreach(U,UpDiag),

foreach(D,DownDiag),

param(N,Square,Sum)

do

Magicsum #= sum(Square[I,1..N]),

Magicsum #= sum(Square[1..N,I]),

U is Square[I,I],

D is Square[I,N+1-I]

),

%constraints on diagonals

Magicsum #= sum(UpDiag),

Magicsum #= sum(DownDiag),

coding magic square pb34
Coding Magic square pb

%remove symmetry

Square[1,1] #< Square[1,N],

Square[1,1] #< Square[N,N],

Square[1,1] #< Square[N,1],

Square[1,N] #< Square[N,1],

%search

labeling(Vars),

print(Square).

Unfortunately, ECLiPSe ran for a long time without providing any answer. ECLiPSe had also the same behavior for a similar code from ECLiPSe website.

a tiny transportation problem
A Tiny Transportation problem

x

11

x

x

12

1n

x

2

21

a

2

b

x

2

2

22

x

2n

  • How much should be shipped from several sources to several destinations

Demand Qty

Supply cpty

Source

Qty Shipped

Destination

a

1

b

1

1

1

:

:

:

:

n

a

m

b

m

n

a tiny transportation problem36
A Tiny Transportation problem

2

2

3

  • 3 plants with known capacities, 4 clients with known demands and transport costs per unit between them.

200

500

1

1

400

Find qty shipped?

300

300

3

400

4

100

modeling ttp
Modeling TTP
  • TTP can be modeled by a CSP with optimization as follows:
    • Variables: A1,A2,A3,B1,B2,B3,C1, C2, C3,D1,D2,D3
    • Domain: 0.0..Inf
    • constraints:
      • Demand constraints:

A1+A2+A3=200; B1+B2+B3=400; C1+C2+C3=300; D1+D2+D3=100;

      • Capacity constraints:

A1+B1+C1+D1500; A2+B2+C2+D2300; A3+B3+C3+D3400;

    • Minimization of the objective function:

10*A1 + 7*A2 + 11*A3 + 8*B1 + 5*B2 + 10*B3 +

5*C1 + 5*C2 + 8*C3 + 9*D1 + 3*D2 + 7*D3

coding ttp
Coding TTP
  • OPL Studio - Cplex Solver

var float+ productA[Range];var float+ productB[Range];

var float+ productC[Range]; var float+ productD[Range];

minimize

10*productA[1] + 7*productA[2] + 11*productA[3] +

8*productB[1] + 5*productB[2] + 10*productB[3] +

5*productC[1] + 5*productC[2] + 8*productC[3] +

9*productD[1] + 3*productD[2] + 7*productD[3]

subject to {

productA[1] + productA[2] + productA[3] = 200;

productB[1] + productB[2] + productB[3] = 400;

productC[1] + productC[2] + productC[3] = 300;

productD[1] + productD[2] + productD[3] = 100;

productA[1] + productB[1] + productC[1] + productD[1]<=500

productA[2] + productB[2] + productC[2]+productC[2] <= 300;

productA[3] + productB[3] + productC[3] + productD[3] <= 400;

};

coding ttp39
Coding TTP
  • OPL Studio - Cplex Solver: Solution found

Optimal Solution with Objective Value: 6200.0000

productA[1] = 100.0000

productA[2] = 0.0000

productA[3] = 100.0000

productB[1] = 100.0000

productB[2] = 300.0000

productB[3] = 0.0000

productC[1] = 300.0000

productC[2] = 0.0000

productC[3] = 0.0000

productD[1] = 0.0000

productD[2] = 100.0000

productD[3] = 0.0000

coding ttp40
Coding TTP
  • ECLiPSe

:- lib(eplex_cplex).

main1(Cost, Vars) :-

Vars = [A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, D3],

Vars :: 0.0..inf,

A1 + A2 + A3 $= 200, B1 + B2 + B3 $= 400,

C1 + C2 + C3 $= 300, D1 + D2 + D3 $= 100,

A1 + B1 + C1 + D1 $=< 500, A2 + B2 + C2 + D2 $=< 300,

A3 + B3 + C3 + D3 $=< 400,

optimize(min(10*A1 + 7*A2 + 11*A3 + 8*B1 + 5*B2 + 10*B3 +

5*C1 + 5*C2 + 8*C3 +9*D1 + 3*D2 + 7*D3), Cost).

It didn’t run!

calling an undefined procedure cplex_prob_init(…)

zebra puzzle
Zebra puzzle
  • Zebra is a well known puzzle in which five men with different nationalities live in the first five house of a street. They practice five distinct professions, and each of them has a favorite animal and a favorite drink, all of them different. The five houses are painted in different colors. The puzzle is to find who owns Zebra.
  • Zebra puzzle has different statements. We’ll handle two.
  • This kind of Puzzle is usually treated as an instance of the class of tabular constraint satisfaction problems in which we express the problem using tables.
  • In this presentation we show how to solve it using CSP languages: OPL studio and ECLiPSe.
modeling zebra puzzle
Modeling Zebra puzzle
  • In crucial step in Modeling Zebra puzzle is finding the decision variables. In our case, we consider:
    • variables: persons, colors, pets, drinks, tobaccos.
    • Domain: 1..5 (representing the five houses)
    • Constraints:

Expressed directly from the statement of the puzzle.

coding zebra puzzle
Coding Zebra puzzle
  • OPL Studio - ILog Solver

enum people {Englishman, Spaniard, Ukrainian, Norwegian, Japanese};

enum drinks {coffee, tea, milk, orange, water};

enum pets {dog, fox, zebra, horse, snails};

enum tabacco {winston, kools, chesterfields, luckyStrike, parliaments };

enum colors {ivory, yellow, red , green, blue};

range houses 1..5;//{first, second, third, fourth, fifth};

var houses hseClr[colors];

var houses hsePple[people];

var houses hsePts[pets];

var houses hseDrks[drinks];

var houses hseTaba[tabacco];

coding zebra puzzle44
Coding Zebra puzzle

solve{

hsePple[Englishman] = hseClr[red]; hsePple[Spaniard]=hsePts[dog];

hseDrks[coffee] = hseClr[green]; hsePple[Ukrainian] = hseDrks[tea];

hseClr[green] = hseClr[ivory]+1; hseTaba[winston] = hsePts[snails];

hseTaba[kools]=hseClr[yellow]; hseDrks[milk]=3;

hsePple[Norwegian] = 1;

hseTaba[chesterfields]=hsePts[fox]+1 \/ hseTaba[chesterfields]=hsePts[fox]-1;

hseTaba[kools] = hsePts[horse]+1 \/ hseTaba[kools] = hsePts[horse]-1 ;

hseTaba[ luckyStrike] = hseDrks[orange];

hsePple[ Japanese] = hseTaba[parliaments];

hsePple[Norwegian] = hseClr[blue]+1 \/ hsePple[Norwegian] = hseClr[blue]-1;

//slient constraints-Global constraint alldifferent

alldifferent(hsePple);//forall(ordered i,j in people) hsePple[i] <> hsePple[j];

alldifferent(hsePts);//forall(ordered i,j in pets) hsePts[i] <> hsePts[j];

alldifferent(hseClr);//forall(ordered i,j in colors) hseClr[i] <> hseClr[j];

alldifferent(hseDrks);//forall(ordered i,j in drinks) hseDrks[i] <> hseDrks[j];

alldifferent(hseTaba);//forall(ordered i,j in tabacco) hseTaba[i] <> hseTaba[j];

};

coding zebra puzzle45
Coding Zebra puzzle

% The Englishman lives in a red house.

% The Spaniard owns a dog.

% The Japanese is a painter.

% The Italian drinks tea.

% The Norwegian lives in the first house on the left.

% The owner of the green house drinks coffee.

% The green house is on the right of the white one.

% The sculptor breeds snails.

% The diplomat lives in the yellow house.

% Milk is drunk in the middle house.

% The Norwegian's house is next to the blue one.

% The violinist drinks fruit juice.

% The fox is in a house next to that of the doctor.

% The horse is in a house next to that of the diplomat.

%

% Who owns a Zebra, and who drinks water?

%

coding zebra puzzle46
Coding Zebra puzzle

:- lib(fd).

zebra :-

% we use 5 lists of 5 variables each

Nat = [English, Spaniard, Japanese, Italian, Norwegian],

Color = [Red, Green, White, Yellow, Blue],

Profession = [Painter, Sculptor, Diplomat, Violinist, Doctor],

Pet = [Dog, Snails, Fox, Horse, Zebra],

Drink = [Tea, Coffee, Milk, Juice, Water],

% domains: all the variables range over house numbers 1 to 5

Nat :: 1..5,

Color :: 1..5,

Profession :: 1..5,

Pet :: 1..5,

Drink :: 1..5,

coding zebra puzzle47
Coding Zebra puzzle

% the values in each list are exclusive

alldifferent(Nat),

alldifferent(Color),

alldifferent(Profession),

alldifferent(Pet),

alldifferent(Drink),

% and here follow the actual constraints

English = Red, Spaniard = Dog,

Japanese = Painter, Italian = Tea,

Norwegian = 1, Green = Coffee,

Green #= White + 1, Sculptor = Snails,

Diplomat = Yellow, Milk = 3,

Dist1 #= Norwegian - Blue, Dist1 :: [-1, 1],

Violinist = Juice,

Dist2 #= Fox - Doctor, Dist2 :: [-1, 1],

Dist3 #= Horse - Diplomat, Dist3 :: [-1, 1],

coding zebra puzzle48
Coding Zebra puzzle

% put all the variables in a single list

flatten([Nat, Color, Profession, Pet, Drink], List),

% search: label all variables with values

labeling(List),

% print the answers: we need to do some decoding

NatNames = [English-english, Spaniard-spaniard, Japanese-japanese,

Italian-italian, Norwegian-norwegian],

memberchk(Zebra-ZebraNat, NatNames),

memberchk(Water-WaterNat, NatNames),

printf("The %w owns the zebra%n", [ZebraNat]),

printf("The %w drinks water%n", [WaterNat]).

Answer from ECLiPSe after 0.02s

The japanese owns the zebra

The norwegian drinks water

uzbekian puzzle
Uzbekian Puzzle
  • An uzbekian sales man met five traders who live in five different cities. The five traders are:
    • {Abdulhamid, Kurban,Ruza, Sharaf, Usman}

The five cities are :

    • {Bukhara, Fergana, Kokand, Samarkand, Tashkent}

Find the order in which he visited the cities given the following information:

    • He met Ruza before Sharaf after visiting Samarkand,
    • He reached Fergana after visiting Samarkand followed by other two cities,
    • The third trader he met was Tashkent,
    • Immediately after his visit to Bukhara, he met Abdulhamid
    • He reached Kokand after visiting the city of Kurban followed by other two cities;
modeling uzbekian puzzle
Modeling Uzbekian Puzzle
  • The uzbekian puzzle can formulated within the CSP framework as follows:
    • Variables: order in which he visited each city and met each trader
    • Domain:1..5
    • constraints:
      • He met Ruza before Sharaf after visiting Samarkand,
      • He reached Fergana after visiting Samarkand followed by other two cities,
      • The third trader he met was Tashkent,
      • Immediately after his visit to Bukhara, he met Abdulhamid
      • He reached Kokand after visiting the city of Kurban followed by other two cities;
coding uzbekian puzzle in opl
Coding Uzbekian Puzzle in OPL

enum cities {Bukhara, Fergana, Kokand, Samarkand, Tashkent};

enum traders {Abdulhamid, Kurban, Ruza, Sharaf, Usman};

range order 1..5;

var order mtTrader[traders];

var order vstCty[cities];

solve{

mtTrader[Ruza] < mtTrader[Sharaf];

mtTrader[Ruza] > vstCty[Samarkand];

vstCty[Fergana] = vstCty[Samarkand] + 2;

vstCty[Tashkent] = 3;

mtTrader[Abdulhamid] = vstCty[Bukhara] + 1;

vstCty[Kokand] = mtTrader[Kurban] + 2;

alldifferent(mtTrader);

alldifferent(vstCty);

};

Solution [1]

mtTrader[Abdulhamid] = 2

mtTrader[Kurban] = 3

mtTrader[Ruza] = 4

mtTrader[Sharaf] = 5

mtTrader[Usman] = 1

vstCty[Bukhara] = 1

vstCty[Fergana] = 4

vstCty[Kokand] = 5

vstCty[Samarkand] = 2

vstCty[Tashkent] = 3

knapsack problem
Knapsack problem
  • We have a knapsack with a fixed capacity and a number of items. Each item has a weight and a value. The problem consists of filling the knapsack without exceeding its capacity, while maximizing the overall value of its contents.
  • Knapsack problem is an example of Mixed integer programming.
modeling knapsack problem
Modeling Knapsack problem
  • A CSP model for knapsack problem is given by:
    • Variables: For each item, we associate a variable that gives the quantity of such an item we can put in the knapsack.
    • Domain: 0..Capacity of the knapsack
    • Constraints:
      • sum of the weights in the knapsack is less than the capacity
    • Objective function to maximize:
      • sum of the values in the knapsack
coding knapsack pb in opl
Coding Knapsack Pb in OPL

range items 1..10;

int MaxCapacity= 1000;

int value[items] = [29,30,25,27, 28,21,23,19,18,17];

int weight[items] =[30,32,33,31,34,40,45,44,39,35];

var int take[items] in 0..MaxCapacity;

maximize

sum(i in items) value[i] * take[i]

subject to

sum(i in items) weight[i] * take[i] <= MaxCapacity;

integer programming (CPLEX MIP)

displaying solution ...

take[1] = 28 take[2] = 5 take[i] = 0, i=3..10

graceful labeling problem
Graceful labeling problem
  • Given a tree T with m+1 nodes, and m edges, find the possible labels in {0,1,…,m} for the nodes such that the absolute value of the difference of the labels of the nodes related to each edge are all different.
  • Formally, let f be a function from V ----> {0,…,m}, where V is the set of the vertices of T.
    • f is said to be a graceful labeling of T iff
      • |f(vi)-f(vj)| are all different for any edge vivj in T.
modeling graceful labeling pb
Modeling Graceful labeling Pb
  • Graceful labeling problem can be formulated into the following CSP:
    • variables: labels to put on each node of T
    • Domain: 0..m
    • constraints:
      • the absolute value of the difference between the labels of any edge are all different
coding graceful labeling pb
Coding Graceful labeling Pb
  • OPL program for graceful labeling problem

int nbreOfNodes = ...;

//set the range of the labels of the nodes

range nodes 0..nbreOfNodes-1; range indices 1..nbreOfNodes;

int adjacencyMatrix[indices, indices] = ...;

var nodes label[indices];

solve {

alldifferent(label);

forall(ordered i, j in indices){

if(adjacencyMatrix[i,j] <> 0) then

forall(ordered k, h in indices){

if(adjacencyMatrix[k,h] <> 0 & not(k=i & h=j)) then

abs(label[i]-label[j])<>abs(label[h]-label[k])

endif;

}

endif; };};

coding graceful labeling pb58
Coding Graceful labeling Pb

1

2

  • Data file

nbreOfNodes = 7;

adjacencyMatrix = [[ 0, 1, 0, 0, 0, 0, 0],

[ 1, 0, 1, 0, 0, 0, 0 ],

[ 0, 1, 0, 1, 0, 1, 0 ],

[ 0, 0, 1, 0, 1, 0, 0 ],

[ 0, 0, 0, 1, 0, 0, 0 ],

[ 0, 0, 1, 0, 0, 0, 1 ],

[ 0, 0, 0, 0, 0, 1, 0 ]];

  • Solution Example:

3

4

6

5

7

label[1] = 0

label[2] = 6

label[3] = 1

label[4] = 3

label[5] = 4

label[6] = 5

label[7] = 2