đềtài lý thuyết đồ thị chutrìnheulervà chu trìnhhamilton

31 0 0
Tài liệu đã được kiểm tra trùng lặp
đềtài lý thuyết đồ thị chutrìnheulervà chu trìnhhamilton

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Cài đặt chương trình và minh họa kết quả --- 225.1 Cấu trúc dữ liệu và giải thuật --- 225.2 Cấu trúc dữ liệu --- 245.3 Giải thuật ---255.4 Minh họa kết quả --- 26LỜI MỞ ĐẦUMôn Đại Số Tuy

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCMĐH QUỐC GIA TP HỒ CHÍ MINH

BÁO CÁO BÀI TẬP LỚNĐẠI SỐ TUYẾN TÍNH

NỘI DUNG ĐỀ TÀI:

LÝ THUYẾT ĐỒ THỊ (CHU TRÌNH EULERVÀ CHU TRÌNH HAMILTON)

GV Hướng Dẫn: Nguyễn TrọngLớp L04 Nhóm 12

Trang 3

NHẬN XÉT CỦA GVHD

Trang 4

MỤC LỤC

LỜI MỞ ĐẦU -3

1 Chu trình Euler, Đường đi Euler và Đồ thị Euler - 4

1.1 Các định nghĩa cơ bản về lí thuyết đồ thị - 4

1.2 Khái niệm Chu trình Euler, Đường đi Euler và Đồ thị Euler - 7

1.3 Thuật toán Fleury tìm chu trình Euler -8

1.4 Một số thuật toán trên Đồ thị - 9

1.5 THUẬT TOÁN TÌM 1 CHU TRÌNH EULER TỪ 1 ĐỈNH BẤT KÌ - 13

3 Thuật toán quay lui giải bài toán người giao hàng -19

3.1 Thuật toán quay lui: - 19

3.2 Bài toán người giao hàng: - 19

3.3 Cách giải bài toán người giao hàng -20

4 Ứng dụng của bài toán Người giao hàng -21

5 Cài đặt chương trình và minh họa kết quả - 22

5.1 Cấu trúc dữ liệu và giải thuật - 22

5.2 Cấu trúc dữ liệu - 24

5.3 Giải thuật -25

5.4 Minh họa kết quả - 26

LỜI MỞ ĐẦU

Môn Đại Số Tuyến Tính là một môn học có những ứng dụng rất thực tế vào đời sống ,trong nhiều lĩnh vực khác nhau như kĩ thuật ảnh, buôn bán,kinh tế,…Nó có tác động to lớn đến lí thuyết đồ thị ngày nay và mai sau.

Trong quá trình học tập tại trường chúng tôi đã nhận được sự hỗ trợ nhiệt tình từ giáo viên bộ môn và bạn bè xung quanh đã giúp chúng em có những cái nhìn mới mẻ hơn về môn học Nó không chỉ đơn thuần là lí thuyết mà đó còn là thực tiễn.Vì thế ,chúng em quyết định viết bài báo cáo nghiên cứu về lí thuyết đồ thị xoay quanh các định nghĩa về đồ thị và chu trình euler và hamilton

Qua việc thực hiện bài báo cáo này đã giúp chúng em hiểu thêm những kiến thức bổ ích Tuy nhiên trong quá trình làm báo cáo khó trách khỏi thiếu sót Chúng em mong nhận được sự xem xét từ thầy để báo cáo được hoàn thiện hơn

Trang 5

1 Chu trình Euler, Đường đi Euler và Đồ thị Euler1.1 Các định nghĩa cơ bản về lí thuyết đồ thị

1 Đơn đồ thị vô hướng

+ Đơn đồ thị vô hướng : G = <V, E>, gồm V là tập các đỉnh, E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh

2.Đa đồ thị vô hướng

+ Đa đồ thị vô hướng G = <V, E>, gồm V là tập các đỉnh, E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh Hai cạnh e1, e2 được gọi là cạnh bội nếu chúng cùng tương ứng với 1 cặp đỉnh

3.Đơn đồ thị có hướng

+ Đơn đồ thị có hướng :G = <V, E>, gồm V là tập các đình, E là tập các cặp có thứ tự gồm hai phần tử V gọi là các cung

Trang 6

4.Đa đồ thị có hướng

+ Đa đồ thị có hướng G = <V, E>, gồm V là tập các đỉnh, E là họ các cặp có thứ tự gồm hai phần tử V gọi là các cung Hai cung e1, e2 tương ứng với cùng một cặp đình được gọi là cung lặp

+ Dây các đỉnh (hoặc dãy các cạnh) trong đó 2 đình liên tiếp có cạnh nổi Độ dài đường đi là số cạnh trên đường đi.

Trang 7

13.Liên thông yếu

+Đồ thị có hướng gọi là liên thông yếu nếu đồ thị vô hướng tương ứng của nó liên thông

Ví dụ 1.1 Tìm các đường đi, chu trình trong đồ thị vô hướng như hình 1.1

Hình 1.1 Đường đi trên đồ thị + a, b, c, d là đường đi đơn độ dài 3.

+ a, b, f, không là đường đi vì (b, f) không phải là cạnh của đồ thị + Dãy a, b, c, f, e, a là chu trình độ dài 5.

+ Đường đi a, b, c, f, e, b, c có độ dài 6 không phải là đường đi đơn vì cạnh (b, c) có mặt hai lần.

Ví dụ 1.2 Kiểm tra tính liên thông của đồ thị hình 1.2

Trang 8

Đồ thị này không liên thông vì có đỉnh g là đỉnh cô lập nên không có đường đi từđình bất kỳ đến đỉnh g.

Hình 1.2 Đồ thị không liên thông

1.2 Khái niệm Chu trình Euler, Đường đi Euler và Đồ thị Euler

Cho đồ thị vô hướng G=(V,E).

Chu trình Euler là chu trình đi qua mọi cạnh và mọi đỉnh của đồ thị, mỗi cạnh

không đi quá 1 lần.

Đường đi Euler là đường đi qua mọi cạnh và mọi đỉnh của đồ thị, mỗi cạnh không

đi quá 1 lần.

Cho đồ thị có hướng G=(V,E).

Chu trình có hướng Euler là chu trình có hướng đi qua mọi cung và mọi đỉnh đồ thị,

mỗi cung không đi quá 1 lần.

Đường đi có hướng Euler là đường đi có hướng đi qua mọi cung và mọi đỉnh đồ thị,

mỗi cung không đi quá 1 lần.

Đồ thị chứa chu trình Euler gọi là Đồ thị Euler.

Trang 9

1.3 Thuật toán Fleury tìm chu trình Euler

Đầu vào Đồ thị G ≠ ∅, không có đỉnh cô lập.

Đầu ra Chu trình Euler C của G, hoặc kết luận G không có chu trình Euler

-Trường hợp đỉnh v1không là đỉnh treo:

Nếu mọi cạnh liên thuộc v1là cầu, thì không có chu trình Euler, kết thúc.

-Ngược lại, chọn cạnh( v1,v2) bất kỳ không phải là cầu trong H Thêm vào đường đi đỉnh v2 Sang bước (4)

(4)Xoá cạnh vừa đi qua, và xoá đỉnh cô lập:

Loại khỏi H cạnh ( v1,v2) Nếu H có đỉnh cô lập, thì loại chúng khỏi H Đặt v1:=v2.

Trang 10

+Nếu xuất phát từ đỉnh 1, có hai cách đi tiếp: hoặc sang 2 hoặc sang 3, giả sử ta sẽ sang 2 và xoá cạnh (1, 2) vừa đi qua Từ 2 có ba cách để đi, là sang 3 sang 4 hoặc sang 5, giả sử ta sẽ sang 5 và xoá cạnh (2, 5) vừa đi qua Từ đỉnh 5, chỉ có 1 cách đi là sang đỉnh 6, nên cho dù (5, 6) là cầu ta cũng phải đi sau đó xoá luôn cạnh (5, 6) Từ đỉnh 6, chỉ có 1 cách đi là sang đỉnh 3, nên cho dù (6, 3) là cầu ta cũng phải đi sau đó xoá luôn cạnh (6, 3) Đến đây, các cạnh còn lại của đồ thị có thể vẽ như Hình bằng nét liền, các cạnh đã bị xoá được vẽ bằng nét đứt.

Hình 1.5 Duyệt đồ thị theo thuật toán Fleury

Bây giờ đang đứng ở đỉnh 6 thì ta có 3 cách đi tiếp: sang 1, sang 2 hoặc sang 4 Vì (3, 1) là cầu nên ta sẽ không đi theo cạnh (3, 1) mà sẽ đi (3, 4) hoặc (3, 2) Nếu đi

theo (3, 4) và cứ tiếp tục đi như vậy, ta sẽ được chu trình Euler là <1, 2, 5, 6, 3, 4, 2, 3, 1> Còn đi theo (3, 2) sẽ tìm được chu trình Euler là: <1, 2, 5, 6, 3, 2, 4, 3, 1>.

1.4 Một số thuật toán trên Đồ thị

*Thuật toán Floyed tìm đường đi ngắn nhất giữa mọi cặp đỉnh trên đồthị:

Thuật giải tìm độ dài đường đi ngắn nhất giữa mọi cặp đỉnh trong đồ thị có hướng liên thông có trọng số (không bắt buộc ≥ 0).

Đầu vào Đồ thị liên thông G=(V,E), V= {1, 2, , n}, có trọng số w(i,j) với

mọi cung (i,j).

Đầu ra Ma trận D=[d(i,j)], trong đó d(i,j) là chiều dài đường đi ngắn nhất từ

i đến j với mọi cặp (i,j).

Phương pháp:

Bước khởi tạo: Ký hiệu D0là ma trận xuất phát D0= [d0(i,j)] 4

Trang 11

Trong đó: d0(i,j) = w(i,j) nếu tồn tại cung (i,j) và d0(i,j) = + nếu không tồn tại cung (i,j) (đặc biệt nếu không có khuyên tại i thì d0(i,i) =+).

Gán k:=0.

Kiểm tra kết thúc: Nếu k = n, kết thúc.

D = Dn là ma trận độ dài đường đi ngắn nhất Ngược lại tăng k lên 1 đơn vị (k:=k+1) và sang (3).

Tính ma trận Dktheo Dk-1:

Với mọi cặp (i,j), i=1 n, j=1 n thực hiện:

Nếu dk-1(i,j) > dk-1(i,k) + dk-1(k,j) thì đặt dk(i,j) := dk-1(i,k) + dk-1(k,j) ngược lại đặt dk(i,j) := dk-1(i,j) Quay lại bước (2).

Định lý 1: Thuật toán Floyd là đúng.Hệ quả:

Nếu ma trận kết quả của thuật toán Floyd có phần tử hữu hạn trên đường chéo i = i thì đồ thị chứa chu trình.

Nếu ma trận kết quả chứa phần tử +∞ ngoài đường chéo i = i thì đồ thị không liên thông mạnh.

Ghi chú: Từ hệ quả trên ta có thể sử dụng thuật toán Floyd, với w(i, j) = 1

nếu tồn tại cung (i, j) và w(i, j)= +∞ nếu không tồn tại cung (i, j), để xác định xem đồ thị có chu trình hay có liên thông hay không.

Trang 12

D0= 3 3

Trang 13

Từ ma trận D0, theo thuật toán, ta xây dựng các ma trận tiếp theo như sau (các ô gạch dưới có giá trị thay đổi)

Bảng 1.8 Các bước tìm đường đi ngắn nhất giữa mọi cặp đỉnh bằng Floyd

Trang 14

Cuối cùng, D6là ma trận khoảng cách ngắn nhất giữa các đỉnh Theo hệ quả ta thấy đồ thị liên thông chứa mạnh và chu trình

1.5 THUẬT TOÁN TÌM 1 CHU TRÌNH EULER TỪ 1 ĐỈNH BẤT KÌ

import numpy as np

n = int(input('Nhập số đỉnh của đồ thị: '))

adj = [[] for _ in range(n)] #tạo 1 ds kề adj với n phần tử để chứa các đỉnh kề degree = [0] * n #Tạo một danh sách để lưu chữ bậc của đỉnh

print("Nhập ma trận kề (mỗi hàng cách nhau một dấu cách):") a = np.array([input().split() for _ in range(n)], dtype=int) #Lệnh để tạo nên danh sách kề và bậc của đỉnh

Trang 15

#Tạo ngăn xếp rỗng để lưu trữ các đỉnh trong quá trình tìm kiếm

#Điều kiện để là chu trình euler

if (all(degree[i] % 2 == 0 for i in range(n))) and all(visited):

Trang 16

Nhập dữ liệu:

In ra kết quả:

Trang 17

2 Đồ thị Hamilton

2.1 Khái niệm đường đi, chu trình Hamilton

Cho đồ thị G = (V, E) có n đỉnh.

Chu trình (x1, x2, , xn, x1) được gọi là chu trình Hamilton nếuxi≠ xjvới 1 ≤ i < j ≤ nĐường đi (x1, x2, , xn) được gọi là đường đi Hamilton nếuxi≠ xjvới 1 ≤ i < j ≤ n

Chúng ta có thể phát biểu lại như sau:

+ Chu trình Hamilton là chu trình xuất phát từ 1 đỉnh, đi thăm tất cả những đỉnh còn lại mỗi đỉnh đúng một lần, cuối cùng quay trở lại với đỉnh xuất phát.

+ Đường đi Hamilton là đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần.

Khác với khái niệm chu trình Euler và đường đi Euler, một chu trình Hamilton không phải là đường đi Hamilton bởi có đỉnh xuất phát được thăm tới 2 lần.

Ví dụ: Xét 3 đơn đồ thị G1, G2, G3sau:

Đồ thị G1 có chu trình Hamilton (a, b, c, d, e, a) G2 không có chu trình Hamilton vì deg(a) = 1 nhưng có đường đi Hamilton (a, b, c, d) G3không có cả chu trình Hamilton lẫn đường đi Hamilton.

iii) Nếu xóa đi k đỉnh bất kỳ cùng các cạnh liên thuộc chúng thì đồ thị còn lại sẽ có tối đa k thành phần liên thông.

Trang 18

* Hệ quả:

Giả sử đồ thị n đỉnh G có đường đi Hamilton P Khi đó: (i) Đồ thị G liên thông.

(ii) Có ít nhất n – 2 đỉnh bậc ≥ 2 và mỗi đỉnh có đúng hai cạnh liên thuộc thuộc đường đi P.

(iii) Nếu xóa đi k đỉnh bất kỳ cùng các cạnh liên thuộc chúng thì đồ thị còn lại sẽ cótối đa k + 1 thành phần liên thông.

2.2.2 Điều kiện đủ

* Định lí 1: Đồ thị đủ Kn với n lẻ n ≥3 có n – ½ chu trình Hamilton từng đôi một

không giao nhau.

* Định lý 2 ( Dirac) : Cho G là đơn đồ thị n đỉnh (n ≥ 3) Nếu bậc deg(v) ≥ n/2 với

mọi đỉnh v của G thì G có chu trình Hamilton.

* Định lý 3: Cho G là đồ thị đơn n đỉnh (n ≥ 3) Nếu bậc d(v) ≥ (n-1)/2 với mọi đỉnh

v của G thì G có đường đi Hamilton.

* Định lý 4 : Cho G là đồ thị đơn n đỉnh (n≥3) Giả sử u và v là 2 đỉnh không kề

nhau của G sao cho deg(u) + deg(v) ≥ n

Khi đó G có chu trình Hamilton khi và chỉ khi đồ thị G + (u,v) có chu trình Hamilton.

* Định lý 5 : Cho G là đồ thị đơn giản n đỉnh Giả sử G’ và G’’ là 2 đồ thị thu được

từ G bằng cách quy nạp nối tất cả các cặp đỉnh không kề nhau có tổng các bậc ít nhất

bằng n Khi đó ta có G’ = G’’.

Từ định nghĩa trên ta có thể định nghĩa khái niệm bao đóng của đồ thị

* Bao đóng : C(G) của đồ thị G n đỉnh là đồ thị thu được từ G bằng cách, theo quy

nạp, nối tất cả các cặp đỉnh không kề nhau mà tổng số bậc ít nhất bằng n cho đến khi

không còn cặp đỉnh nào như vậy nữa.

* Định lý 6: Đồ thị G có chu trình Hamilton khi và chỉ khi bao đóng của G có chu

trình Hamilton.

* Định lý 7: Nếu bao đóng C(G) = Kn(n 3) thì đồ thị G có chu trình Hamilton.

* Định lý 8 ( Định lý Ore): Cho G là đơn đồ thị n đỉnh (n 3).

Trang 19

Nếu deg(u) + deg(v)n với mọi cặp đỉnh không kề nhau thì đồ thị G có chu trình

Nếu deg(v) > n/2 với mọi đỉnh v của G thì G có chu trình Hamilton.

* Định lý 11: Đồ thị Km,ncó chu trình Hamilton khi và chỉ khi m = n.

* Định lý 12: Đồ thị Km,ncó đường đi Hamilton khi và chỉ khi |m-n|=1

2.2.3 Đồ thị có hướng:

* Định lý 13: (Điều kiện đủ tồn tại chu trình có hướng Hamilton)

a (Meyniel) Nếu đồ thị G liên thông mạnh và deg(u) + deg(v) ≥ 2n - 1,

u, v G không kề nhau thì G có chu trình có hướng Hamilton

b (Ghoula – Houri) Nếu đồ thị G liên thông mạnh và deg(v) n v G

thì G có chu trình có hướng Hamilton.

c (Woodall) Nếu deg0(u) + deg1(v) n u, v G không tồn tại cung từ u từ v

thì G có chu trình có hướng Hamilton

d Nếu deg1(v) n/2 & deg0(v) n/2 v G thì G có chu trình có hướng Hamilton.

* Định lý 14: (Điều kiện đủ tồn tại đường đi có hướng Hamilton)

a Nếu deg(u) + deg(v) 2n - 3 u, v G không kề nhau thì G có đường đi có

hướng Hamilton.

b Nếu deg(v) n - 1 v G thì G có đường đi có hướng Hamilton.c Nếu deg0(u) + deg1(v) n – 1 u, v G không tồn tại cung từ u đến v

thì G có đường đi có hướng Hamilton.

d Nếu deg1(v) n/2 & deg0(v) n/2 v G thì G có đường đi có hướng Hamilton.

Bây giờ chúng ta nghiên cứu đường đi và chu trình có hướng Hamilton trong đồ thị có hướng đủ (có đồ thị lót đủ) Trước hết là định lý khẳng định sự tồn tại đường đi có hướng Hamilton trong đồ thị có hướng đủ.

* Định lý 15: (Konig) Mọi đồ thị có hướng đủ đều có đường đi có hướng Hamilton.

Trang 20

* Định lý 16: Đồ thị có hướng đủ G = (V, E) gọi là bắc cầu nếu (u, v) và (v, w) E

suy ra (u, w) E.

Từ định nghĩa ta thấy ngay, một đồ thị có hướng đủ là bắc cầu khi và chỉ khi nó không có chu trình có hướng độ dài 3.

* Định lý 17: Đồ thị có hướng đủ bắc cầu khi và chỉ khi nó không có chu trình có

* Định lý 18: Đường đi Hamilton trong đồ thị có hướng đủ là duy nhất khi và chỉ khi

đồ thị bắc cầu.

* Định lý 19: (Moon – Moser) Cho G = (V, E) là đồ thị có hướng đủ liên thông

mạnh bậc n (n 3) Khi đó với mọi đỉnh v và số nguyên p (3 p n) luôn tồn tạichu trình có hướng sơ cấp độ dài p qua đỉnh v.

* Định lý 20: (Camion) Đồ thị có hướng đủ có chu trình có hường Hamilton khi và

chỉ khi nó liên thông mạnh.

3 Thuật toán quay lui giải bài toán người giao hàng3.1 Thuật toán quay lui:

Thuật toán quay lui là một phương pháp lập trình để giải quyết các vấn đề một cách hệ thống bằng cách chia nhỏ chúng thành các bài toán con nhỏ hơn Phương pháp này thường được sử dụng trong các bài toán tối ưu hóa và các bài toán quyết định

3.2 Bài toán người giao hàng:

Một người giao hàng cần phải giao hàng đến m địa điểm khác nhau trong một

thành phố Mỗi địa điểm cần được thăm đúng một lần, và sau đó người giao hàng cần quay trở lại điểm xuất phát ban đầu Mục tiêu là xác định trình tự giao hàng sao cho tổng khoảng cách di chuyển là ngắn nhất Khoảng cách giữa hai địa điểm có thể được hiểu là cự li địa lý, thời gian di chuyển, hoặc chi phí phát sinh, và được xem là đã biết trước.

Giả sử có ma trận chi phí C=cijvới i,j=1,2,…m, trong đó cij​ là chi phí di

chuyển từ địa điểm i đến địa điểm j Hành trình của người giao hàng có thể được

Trang 21

biểu diễn như một chuỗi các cặp: (v(1),v(2)),(v(2),v(3)),…,(v(m-1),v(m)),(v(m),v(1))

với v(i) là địa điểm thứ i trong hành trình.

Ta xét đồ thị đầy đủ G=(V,E) với V={1,2…m},có trọng số trên các cạnh cij,

nghĩa là giữa mọi cặp địa điểm i và j với i≠j, luôn có cạnh nối (i,j) và (j,i) trong đồ

thị Bài toán trở thành việc tìm chu trình Hamilton có tổng chi phí là nhỏ nhấttrên đồ thị G, với chu trình Hamilton là một chu trình đi qua mỗi đỉnh đúng mộtlần và quay về điểm xuất phát

3.3 Cách giải bài toán người giao hàngBước 1: Khởi tạo

Ma trận chi phí C: Đây là ma trận đã cho, nơi C[i][j] biểu diễn chi phí di chuyển từ địa điểm i đến địa điểm j.

-Mảng đường đi: Một mảng để lưu trữ đường đi hiện tại.

-Biến chi phí tối ưu: Một biến để lưu trữ chi phí tối ưu nhất tìm được -Mảng đánh dấu: Một mảng để đánh dấu các địa điểm đã được thăm.

Bước 2: Định nghĩa Hàm Quay Lui

Hàm quay lui sẽ thực hiện các nhiệm vụ sau:

-Kiểm tra điều kiện dừng: Nếu tất cả các địa điểm đã được thăm, kiểm tra xem chi phí trở về điểm xuất phát có thấp hơn chi phí tối ưu hiện tại không Nếu có, cập nhật chi phí tối ưu.

-Lặp qua các địa điểm: Với mỗi địa điểm chưa được thăm, thực hiện các bước sau: -Đánh dấu địa điểm đó là đã thăm.

-Thêm chi phí di chuyển đến địa điểm đó vào chi phí hiện tại -Gọi đệ quy hàm quay lui với địa điểm mới.

-Khi trở về từ đệ quy, bỏ đánh dấu và trừ bớt chi phí tương ứng -Quay lui: Quay lại bước trước để thử các khả năng khác.

Trang 22

Bước 3: Chạy Hàm Quay Lui

-Bắt đầu từ một địa điểm (thường là địa điểm xuất phát) -Gọi hàm quay lui.

Bước 4: In kết quả

Sau khi hàm quay lui hoàn thành, in ra đường đi và chi phí tối ưu.

4 Ứng dụng của bài toán Người giao hàng

Bài toán người giao hàng sử dụng chu trình Hamilton là một bài toán nổi tiếng trong lĩnh vực tối ưu hóa và lý thuyết đồ thị Mục tiêu của bài toán này là tìm ra một chu trình (đường đi qua mỗi đỉnh một lần và trở về điểm xuất phát) có tổng chi phí (thường là khoảng cách hoặc thời gian) nhỏ nhất qua một tập các đỉnh trên đồ thị Một công ty giao hàng nhỏ có trụ sở tại Hà Nội, Việt Nam, cần phải giao hàng đến 5 địa điểm khác nhau trong thành phố Mục tiêu của họ là tối ưu hóa lộ trình để giảm thiểu tổng quãng đường di chuyển Chúng ta sẽ sử dụng bài toán người giao hàng dựa trên chu trình Hamilton để tìm ra lộ trình tối ưu.

Các địa điểm cụ thể là:

1 Trụ sở công ty (điểm xuất phát và kết thúc): 1 Lê Thánh Tông, Hoàn Kiếm 2 Điểm giao hàng A: 25 Láng Hạ, Ba Đình

3 Điểm giao hàng B: 132 Xuân Thủy, Cầu Giấy 4 Điểm giao hàng C: 56 Phạm Hùng, Nam Từ Liêm 5 Điểm giao hàng D: 100 Trần Duy Hưng, Cầu Giấy 6 Điểm giao hàng E: 75 Đường Thành, Hoàn Kiếm

Giả sử chúng ta có thông tin khoảng cách giữa các điểm như sau (đơn vị: km):

Ngày đăng: 01/05/2024, 08:44

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan