Note Đóng lại

Gợi ý giải bài tập Toán rời rạc 2(P2)

 Tài liệu blog

Gợi ý giải bài tập Toán rời rạc 2

Cho đơn đồ thị vô hướng G = <V, E> gồm 10 đỉnh đfdkược biểu diễn dưới dạng ma trận kề như sau:




1
2
3
4
5
6
7
8
9
0
1
0
1
0
0
0
0
0
0
1
1
2
1
0
1
1
0
0
0
1
1
1
3
0
1
0
1
1
0
0
0
0
1
4
0
1
1
0
1
1
1
1
0
0
5
0
0
1
1
0
1
0
0
0
0
6
0
0
0
1
1
0
1
0
0
0
7
0
0
0
1
0
1
0
1
0
0
8
0
0
0
1
0
0
1
0
1
0
9
1
1
0
0
0
0
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
Hãy thực hiện:
a)     Trình bày thuật toán duyệt theo chiều rộng bắt đầu từ đỉnh u Î V trên đồ thị G?
b)     Sử dụng thuật toán duyệt theo chiều rộng tìm một đường đi có ít cạnh nhất từ đỉnh 1 đến đỉnh 7 của đồ thị G, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán?

Giải:
a,
Thuật toán BFS(u):
Queue= Ø;Push(u,Queue);
Chuaxet[u]=false;
Bước 2:(Lặp)
While(Queue Ø) {
     s=Pop(Queue); <Tham dinh s>;
     for each t Є ke() do{
            if(chuaxet[t]){
     chuaxet[t]=false;
    Push(t,Queue);
            }
}    
}
Bước 3: (Tra lai ket qua)
Return<tap dinh da tham>
b,
BFS(1)={1(0),2(1),9(1),10(1),3(2),4(2),8(2),5(3),6(4),7(4)}
=> Đường đi có ít cạnh nhất: 7ß4ß2ß1
Cho đơn đồ thị vô hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau:




1
2
3
4
5
6
7
8
9
0
1
0
1
0
0
0
0
0
0
1
1
2
1
0
1
1
0
0
0
1
1
1
3
0
1
0
1
1
0
0
0
0
1
4
0
1
1
0
1
1
1
1
0
0
5
0
0
1
1
0
1
0
0
0
0
6
0
0
0
1
1
0
1
0
0
0
7
0
0
0
1
0
1
0
1
0
0
8
0
0
0
1
0
0
1
0
1
0
9
1
1
0
0
0
0
0
1
0
1
0
1
1
1
0
0
0
0
0
1
0
Hãy thực hiện:
a)     Trình bày thuật toán duyệt theo chiều rộng bắt đầu từ đỉnh u Î V trên đồ thị G?
b)     Sử dụng thuật toán duyệt theo chiều rộng tìm  cây khung của đồ thị G bắt đầu tại u = 5, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán?


Giải:
a,
Thuật toán BFS(u):
Buoc 1: (Khoi tao)
Queue= Ø;
Push(Queue,u);
Chuaxet[u]=false;
Buoc 2: (Lap)
While(Queue‡ Ø){
s=Pop(Queue);
<Tham dinh s>;
 for each t Є ke() do{
            if(chuaxet[t]){
            chuaxet[t]=false;
            Push(Queue,t);
}
}

}
Buoc 3: Tra lai ket qua
Return(<Tap dinh da tham>);
b,
BFS(5)={5(0),3(5),4(5),6(5),2(3),4(3),10(3),7(4),8(4),1(2),9(2)}=V;
KL: Cây khung của G:
T={(3,5),(4,5),(5,6),(2,3),(3,4),(3,10),(4,7),(4,8),(1,2),(2,9)}
Câu hỏi 18
Cho đơn đồ thị có hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau:




1
2
3
4
5
6
7
8
9
0
1
0
0
0
1
0
0
0
0
0
1
2
0
0
0
1
0
0
0
0
0
0
3
0
1
0
0
0
0
0
1
1
0
4
0
1
0
0
0
0
0
0
0
1
5
0
0
0
0
0
1
1
0
0
0
6
0
0
0
0
1
0
1
1
0
0
7
0
0
1
0
0
0
0
1
1
0
8
0
0
0
0
1
1
1
0
1
0
9
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
0


a)     Trình bày thuật toán duyệt theo chiều sâu bắt đầu từ đỉnh u Î V trên đồ thị G?
b)     Chứng minh rằng G là đồ thị liên thông yếu nhưng không liên thông mạnh?
Giải:
a,Thuật toán DFS(u):
<Tham dinh u>;
Chuaxet[u]=false;
For each v Є V do{
            If(chuaxet[v])     DFS(v);
}
b,
DFS(1)={1(0),4(1),2(4),10(4)} ‡ V;
èĐồ thị không liên thông mạnh
Xét đồ thị vô hướng nền of G:
DFS(1)={1(0),4(1),2(4),3(2),7(3),5(7),6(5),8(6),9(8),10(2)}=V
=>G liên thông yếu
Câu hỏi 19
Cho đơn đồ thị có hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau:



1
2
3
4
5
6
7
8
9
0
1
0
1
1
0
0
0
0
0
0
0
2
0
0
1
1
1
0
0
0
0
0
3
0
0
0
0
0
0
0
0
1
1
4
0
0
0
0
0
1
1
0
0
0
5
0
0
0
0
0
1
0
0
0
0
6
0
0
0
0
0
0
1
1
0
0
7
0
0
0
1
0
0
0
1
0
0
8
1
1
0
0
0
0
0
0
0
0
9
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0

a)     Trình bày thuật toán duyệt theo chiều rộng bắt đầu từ đỉnh u Î V trên đồ thị G?
b)     Sử dụng thuật toán duyệt theo chiều rộng chứng minh rằng G là đồ thị liên thông mạnh?
Giải:
a,
Buoc 1: (Khoi tao)
Queue= Ø;
Push(Queue,u);
Chuaxet[u]=false;
Buoc 2: (Lap)
While(Queue‡ Ø){
s=Pop(Queue);
<Tham dinh s>;
 for each t Є ke() do{
            if(chuaxet[t]){
            chuaxet[t]=false;
            Push(Queue,t);

}
}

}
Buoc 3: Tra lai ket qua
Return(<Tap dinh da tham>);
b,
BFS(1)={1(0),2(1),3(1),4(2),5(2),9(3),10(3),6(4),7(4),8(6)}=V
BFS(2)={2(0),3(2),4(2),5(2),9(3),10(3),6(4),7(4),1(10),8(6)}=V
BFS(3)={3(0),9(3),10(3),1(10),2(10),4(2),5(2),6(4),7(4),8(6)}=V;
…………………………………………………….
BFS(10)={10(0),1(10),2(10),3(1),4(2),5(2),9(3),10(3),6(4),7(4),8(6)}=V;
è G là đồ thị liên thông mạnh
Câu hỏi 20
Cho đơn đồ thị có hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau:



1
2
3
4
5
6
7
8
9
0
1
0
0
0
1
0
0
0
0
0
1
2
0
0
0
1
0
0
0
0
0
0
3
0
0
0
0
0
0
0
1
1
0
4
0
1
0
0
0
0
0
0
0
1
5
0
0
0
0
0
1
1
0
0
0
6
0
0
0
0
1
0
1
1
0
0
7
0
0
1
0
0
0
0
1
1
0
8
0
0
0
0
1
1
1
0
1
0
9
0
0
0
0
1
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
0

Hãy thực hiện:
a)     Trình bày thuật toán duyệt theo chiều sâu bắt đầu từ đỉnh u Î V trên đồ thị G?
b)     Sử dụng thuật toán duyệt theo chiều sâu tìm tất cả các thành phần liên thông mạnh của đồ thị G, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán?
Giải:
a,Thuật toán DFS(u):
<Tham dinh u>;
Chuaxet[u]=false;
For each v Є V do{
            If(chuaxet[v])     DFS(v);
}
b,
DFS(1)={1(0),4(1),2(4),10(4)}
DFS(2)={2(0),4(2),10(4),1(10)}
DFS(3)={3(0},8(3),5(8),6(5),7(6),9(7)}
DFS(4)={4(0),2(4),10(4),1(10)}
DFS(5)={5(0),6(5),7(6),3(7),8(3),9(3)}
DFS(6)={6(0),5(6),7(5),3(7),8(3),9(8)}
DFS(7)={7(0),3(7),8(3),5(8),6(5),9(8)}
DFS(8)={8(0),5(8),6(5),7(6),3(7),9(3)}
DFS(9)={9(0),5(9),6(5),7(6),3(7),8(3)}
DFS(10)={10(0),1(10),4(1),2(4),} ‡ V
Thành phần liên thông mạnh 1: 1,2,4,10
Thành phần liên thông mạnh 2: 3,5,6,7,8,9
Câu hỏi 21
Cho đơn đồ thị vô hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau




1
2
3
4
5
6
7
8
9
0
1
0
1
0
0
1
0
0
1
0
1
2
1
0
1
1
0
1
0
0
0
0
3
0
1
0
1
0
0
0
0
0
0
4
0
1
1
0
0
0
0
0
0
0
5
1
0
0
0
0
1
1
1
1
1
6
0
1
0
0
1
0
0
0
0
0
7
0
0
0
0
1
0
0
1
1
1
8
1
0
0
0
1
0
1
0
0
1
9
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
1
0
1
1
0
0

Hãy thực hiện:
a)     Phát biểu điều kiện cần và đủ để một đồ thị vô hướng  là đồ thị Euler?
b)     Chứng minh đồ thị G đã cho là đồ thị Euler?
Giải:
a,
Cho đồ thị G=(V,E)
Đồ thị vô hướng G là đồ thị Euler khi và chỉ khi G liên thông và với mọi v thuộc V có bậc chẵn
b,
+, BFS(1)={1(0),2(1),5(1),10(1),3(2),4(2),6(2),7(5),8(5),9(5)} =V
=> G liên thông (1)
+,
deg(1)=4                  deg(6)=2                 
deg(2)=4                  deg(7)=4                 
deg(3)=2                  deg(8)=4                 
deg(4)=2                  deg(9)=2                 
deg(5)=6                  deg(10)=4                 
=> Tất cả có 10 đỉnh bậc chẵn  (2)
(1),(2)è đồ thị G đã cho là đồ thị Euler
Câu hỏi 22
Cho đơn đồ thị vô hướng G = <V, E> gồm 10 đỉnh được biểu diễn dưới dạng ma trận kề như sau




1
2
3
4
5
6
7
8
9
0
1
0
1
0
0
1
0
0
1
0
1
2
1
0
1
1
0
1
0
0
0
0
3
0
1
0
1
0
0
0
0
0
0
4
0
1
1
0
0
0
0
0
0
0
5
1
0
0
0
0
1
1
1
1
1
6
0
1
0
0
1
0
0
0
0
0
7
0
0
0
0
1
0
0
1
1
1
8
1
0
0
0
1
0
1
0
0
1
9
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
1
0
1
1
0
0

Hãy thực hiện:
a)     Trình bày thuật toán tìm một chu trình Euler của đồ thị?
b)     Áp dụng thuật toán, tìm một chu trình Euler của đồ thị G đã cho bắt đầu từ đỉnh 1, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán
Giải:
a,
Thuật toán Euler-Cycle(u):
Bước 1(Khởi tạo):
Stack= Ø;
CE= Ø;
Push(Stack,u);
Bước 2(Lặp):
While(Stack Ø) do{
s=get(Stack);
if(Ke(s) Ø) then{
t=<Dinh dau tien trong Ke(s)>;
Push(Stack,t);
E=E\(s,t);
}
else{
 s=Pop(Stack);
 s=>CE;
}
}
Bước 3(Trả lại kết quả):
Return(<Lật ngược lại các đinh trong CE thu được chu trình EULER>),
b,
+,
BFS(1)={1(0),2(1),5(1),8(1),10(1),3(2),4(2),6(2),7(5),9(5)}=V
àG liên thông (1)
+,
Deg(1)=4
Deg(2)=4
Deg(3)=2
Deg(4)=2
Deg(5)=6
Deg(6)=2
Deg(7)=4
Deg(8)=4
Deg(9)=2
Deg(10)=4
àTất cả 10 đỉnh đều có bậc chẵn (2)
(1),(2)èĐồ thị G là đồ thị Euler

Bước
Stack
CE
1
1
Ø
2
1,2,3,4,2,6,5,1,8,5,7,8,10,1
Ø
3
1,2,3,4,2,6,5,1,8,5,7,8,10,5,9,7,10
1
4
Ø
1,10,7,9,5,10,8,7,5,8,1,5,6,2,4,3,2,1


Kết thúc: Chu trình EULER:
1-2-3-4-2-6-5-1-8-5-7-8-10-5-9-7-10-1
Câu hỏi 23
Cho đơn đồ thị G = <V, E> gồm 7 đỉnh được biểu diễn dưới dạng ma trận trọng số như sau




1
2
3
4
5
6
7
1
0
20
5
17
¥
¥
¥
2
20
0
¥
1
¥
¥
1
3
5
¥
0
25
3
10
¥
4
17
1
25
0
15
¥
¥
5
¥
¥
3
15
0
1
¥
6
¥
¥
10
¥
1
0
1
7
¥
1
¥
¥
¥
1
0

Hãy thực hiện:
a)     Trình bày thuật toán Dijkstra tìm đường đi ngắn nhất xuất phát từ đỉnh uÎ V?
b)     Áp dụng thuật toán Dijkstra, tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 7 của đồ thị G đã cho, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán?
Giải:
a,
Trình bày thuật toán Dijkstra:
Thuật toán Dijkstra:
Bước 1: Khởi tạo s là đỉnh xuất phát
d[s]=0;(Gán nhãn của đỉnh s là 0)
T=V\{s};//T là tập đỉnh có nhãn tạm thời
For(v ЄV){
            d[v]=A[s,v];
            truoc[v]=s;
}
Bước 2: Lặp
While(V Ø){
<Chọn u là đỉnh có d[u] min>;
T=T/{u};<Cố định nhãn của đỉnh u>;
For each vЄV do{
            If(d[v]>d[u]+A[u,v]){
            d[v]=d[u]+A[u,v];
truoc[v]=u;
}
}
}
Bước 3(Trả lại kết quả): Return(d(s,t)).
b,
Bước
d[1]|p[1]
d[2]|p[2]
d[3]|p[3]
d[4]|p[4]
d[5]|p[5]
d[6]|p[6]
d[7]p[7]
1
<0,1>
<20,1>
<5,1>
<17,1>
<¥,1>
<¥,1>
<¥,1>
2

<20,1>
<5,1>
<17,1>
<8,3>
<15,3>
<¥,1>
3

<20,1>

<17,1>
<8,3>
<9,5>
<¥,1>
4

<20,1>

<17,1>

<9,5>
<10,6>
5

<11,7>

<17,1>


<10,6>
6

<11,7>

<12,2>



7



<12,2>




Đường đi ngắn nhất từ đỉnh 1 đến đỉnh 7: 1->3->5->6->7(Độ dài 10)
Câu hỏi 24
Cho đơn đồ thị G = <V, E> gồm 7 đỉnh được biểu diễn dưới dạng ma trận trọng số như sau




1
2
3
4
5
6
7
1
0
10
15
20
¥
1
¥
2
¥
0
3
¥
¥
¥
30
3
¥
¥
0
25
3
¥
45
4
¥
10
25
0
35
¥
¥
5
¥
2
3
¥
0
¥
3
6
¥
¥
1
1
¥
0
25
7
¥
1
¥
30
¥
1
0

Hãy thực hiện:
a)     Trình bày thuật toán Dijkstra tìm đường đi ngắn nhất xuất phát từ đỉnh uÎ V?
b)     Áp dụng thuật toán Dijkstra, tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 7 của đồ thị G đã cho, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán?
Giải:
Trình bày thuật toán Dijkstra:
Thuật toán Dijkstra:
Bước 1: Khởi tạo u là đỉnh xuất phát
d[u]=0;(Gán nhãn của đỉnh u là 0)
T=V\{u};//T là tập đỉnh có nhãn tạm thời
For(v ЄV){
            d[v]=A[s,v];
            truoc[v]=s;
}
Bước 2: Lặp
While(T Ø){
<Chọn t là đỉnh có d[t] min>;
T=T/{t};<Cố định nhãn của đỉnh t>;
For each vЄV do{
            If(d[v]>d[t]+A[t,v]){
            d[v]=d[t]+A[t,v];
truoc[v]=t;
}
}
}
Bước 3(Trả lại kết quả): Return(d(u),truoc[u])
b,


Bước
Đỉnh 1
Đỉnh 2
Đỉnh 3
Đỉnh 4
Đỉnh 5
Đỉnh 6
Đỉnh 7
1
<0,1>
<10,1>
<15,1>
<20,1>
<¥,1>
<1,1>
<¥,1>
2


<10,1>
<2,6>
<2,6>
<¥,1>
<1,1>
<26,6>
3


<10,1>
<2,6>
<2,6>
<5,3>


<26,6>
4


<10,1>


<2,6>
<5,3>


<26,6>
5


<7,5>




<5,3>


<8,5>
6


<7,5>








<8,5>
7












<8,5>


Đường đi ngắn nhất từ đỉnh 1 đến đỉnh 7: 1à6à3à5à7(Độ dài 8)
Câu hỏi 25
Cho đơn đồ thị G = <V, E> gồm 7 đỉnh được biểu diễn dưới dạng ma trận trọng số như sau


1
2
3
4
5
6
7
1
0
15
¥
¥
¥
1
9
2
¥
0
8
¥
¥
¥
¥
3
¥
¥
0
4
1
¥
¥
4
¥
7
¥
0
¥
¥
1
5
¥
10
¥
2
0
¥
¥
6
¥
14
2
¥
¥
0
¥
7
¥
2
¥
¥
¥
¥
0
Hãy thực hiện:
a)     Trình bày thuật toán Dijkstra tìm đường đi ngắn nhất xuất phát từ đỉnh uÎ V?
b)     Áp dụng thuật toán Dijkstra, tìm đường đi ngắn nhất từ đỉnh 6 đến đỉnh 2 của đồ thị G đã cho, chỉ rõ kết quả tại mỗi bước thực hiện theo thuật toán
a,
Trình bày thuật toán Dijkstra:
Thuật toán Dijkstra:
Bước 1: Khởi tạo u là đỉnh xuất phát
d[u]=0;//Gán nhãn của đỉnh u=0
T=V\{u};//T là tập đỉnh có nhãn tạm thời
For(vЄV){
            d[v]=A[s,v];
            truoc[v]=s;
}
Bước 2: Lặp
While(T Ø){
<Chọn t là đỉnh có d[t] min>;
            T=T/{t};<Cố định nhãn của đỉnh t>;
            For each vЄV do{
                        If(d[v]>d[t]+A[t,v]){
                                    d[v]=d[t]+A[t,v];
                                    truoc[v]=t;
}
}
}
Bước 3(Trả lại kết quả): Return(d(u),truoc[u]).
b,
Bước
d[1]|p[1]
d[2]|p[2]
d[3]|p[3]
d[4]|p[4]
d[5]|p[5]
d[6]|p[6]
d[7]p[7]
1
<0,1>
<15,1>
<¥,1>
<¥,1>
<¥,1>
<1,1>
<9,1>
2

<15,1>
<3,6> 
<¥,1>
<¥,1>
<1,1>
<9,1>
3

<15,1>
<3,6> 
<7,3>
<4,3>

<9,1>
4

<14,5>

<6,5>
<4,3>

<9,1>
5

<13,4>

<6,5>


<7,4>
6

<9,7>




<7,4>
7

<9,7>













Đường đi ngắn nhất từ đỉnh 6 đến đỉnh 2 :6à3à5à4à7à2 (9-1=8)

*Chú ý: Gợi ý tại mỗi đề chỉ mang tính chất tham khảo rất mong sự góp ý của mọi người để có lời giải hoàn thiện và chính xác nhất.

Nếu thấy tài liệu có ích hi vọng mn ủng hộ blog bằng cách like và theo dõi địa chỉ page chính thức của Tài Liệu Blog tại : https://www.facebook.com/TaiLieuBlog/

Không có nhận xét nào