Thuật toán tìm kiếm Hill climbing giải bài toán Cây Steiner nhỏ nhất
Các công trình nghiên cứu, phát triển và ứng dụng Công nghệ Thông tin và Truyền thông
Thuật toán tìm kiếm Hill climbing giải bài
toán Cây Steiner nhỏ nhất
Trần Việt Chương1, Phan Tấn Quốc2, Hà Hải Nam3
1
Trung tâm Công nghệ thông tin và Truyền thông, Sở Thông tin và Truyền thông tỉnh Cà Mau
Khoa Công nghệ thông tin, Trường Đại học Sài Gòn
Viện Khoa học Kỹ thuật Bưu điện, Học viện Công nghệ Bưu chính Viễn thông
2
3
Tác giả liên hệ: Trần Việt Chương, [email protected]
Ngày nhận bài: 26/10/2019, ngày sửa chữa: 06/03/2020
Định danh DOI: 10.32913/mic-ict-research-vn.vyyyy.nx.xysz
Tóm tắt: Cây Steiner nhỏ nhất (Steiner Minimum Tree-SMT) là bài toán tối ưu tổ hợp có nhiều ứng dụng quan trọng
trong khoa học và kỹ thuật. Đây là bài toán thuộc lớp NP-hard. Trước đây đã có nhiều công trình nghiên cứu theo các
hướng tiếp cận khác nhau đưa ra các thuật toán để giải bài toán SMT. Bài báo này đề xuất thuật toán Hill climbing search
để giải bài toán Cây Steiner nhỏ nhất, trong đó đề xuất cách thức tìm kiếm lân cận tất định và cách thức kết hợp tìm kiếm
lân cận tất định với tìm kiếm lân cận ngẫu nhiên để giải quyết bài toán Cây Steiner nhỏ nhất. Kết quả thực nghiệm với
hệ thống dữ liệu thực nghiệm chuẩn cho thấy thuật toán đề xuất của chúng tôi cho lời giải với chất lượng tốt hơn so với
một số thuật toán heuristic hiện biết trên một số bộ dữ liệu.
Từ khóa: thuật toán tìm kiếm leo đồi, Cây Steiner nhỏ nhất, thuật toán heuristic, thuật toán metaheuristic, lân cận tất
định, lân cận ngẫu nhiên, tối ưu cục bộ.
Title: Hill Climbing Search Algorithm For Solving Steiner Minimum Tree Problem
Abstract: Steiner Minimum Tree (SMT) is a complex optimization problem that has many important applications in science and
technology. This is a NP-hard problem. In the past, there were many research projects based on different approaches
offering algorithms to solve SMT problems. This paper proposes a Hill climbing search algorithm to solve the SMT
problem; which suggests how to search nearby and how to combine with random nearby searches to solve local
optimization problems. Experimental results with the standard experimental data system show that our proposed
algorithm offers better quality solution than some existing heuristic algorithms on some data sets.
Keywords: Hill climbing search algorithm, Steiner minimum tree problem, heuristic algorithm, metaheuristic algorithm, neighboring
deterministic, random nearby, local optimization.
I. GIỚI THIỆU
Bài toán thứ hai là bài toán Cây Steiner nhỏ nhất
Cây Steiner nhỏ nhất với khoảng cách được cho ngẫu
Steiner nhỏ nhất của chúng tôi trong bài báo này [28].
Giả sử chúng ta cần xây dựng một hệ thống giao
thông nối một số địa điểm trong khu đô thị. Vấn đề
đặt ra là phải thiết kế sao cho hệ thống giao thông đó
có độ dài ngắn nhất nhằm giảm kinh phí xây dựng.
Yêu cầu của bài toán cho phép thêm vào một số địa
điểm trung gian để giảm thiểu tổng chiều dài hệ thống
cần xây dựng. Đây là bài toán có thể vận dụng kiến
thức bài toán Cây Steiner nhỏ nhất để giải.
Mục này trình bày một số định nghĩa và khả năng
ứng dụng của bài toán Cây Steiner nhỏ nhất.
A. Một số định nghĩa
Bài toán Cây Steiner nhỏ nhất hiện được nghiên cứu
ở một số dạng sau: Bài toán thứ nhất là bài toán Cây
1
Tập 2020, Số 1, Tháng 6
Cho 퐺 = (푉(퐺), 퐸(퐺)) là một đơn đồ thị vô hướng
liên thông và có trọng số không âm trên cạnh, 푉(퐺)
là tập gồm 푛 đỉnh, 퐸(퐺) là tập gồm 푚 cạnh, 푤(푒) là
trọng số của cạnh 푒 với 푒 ∈ 퐸(퐺). Cho 퐿 ⊆ 푉(퐺), cây
푇 đi qua tất cả các đỉnh trong tập 퐿, tức với 퐿 ⊆ 푉(푇)
được gọi là Cây Steiner của 퐿.
Tập 퐿 được gọi là tập terminal, các đỉnh thuộc tập
퐿 được gọi là đỉnh terminal.
Đỉnh thuộc cây 푇 mà không thuộc tập 퐿 được gọi
là đỉnh Steiner của cây 푇 đối với tập 퐿.
Steiner của đồ thị 퐺 sai khác với 푇 không quá 푘 cạnh.
Nếu 푇0 là một Cây Steiner thuộc k-lân cận của 푇 thì
ta nói 푇 và 푇0 là k-lân cận với nhau.
Định nghĩa 6: Lân cận tất định và lân cận ngẫu
nhiên
Nếu các Cây Steiner trong lân cận được xác định
không phụ thuộc vào yếu tố ngẫu nhiên thì ta nói về
lân cận tất định, còn nếu ngược lại, ta nói về lân cận
ngẫu nhiên.
B. Ứng dụng của bài toán Cây Steiner nhỏ nhất
Cho 푇 = (푉(푇), 퐸(푇)) là một Cây Steiner của đồ
Bài toán SMT có thể được tìm thấy trong các
ứng dụng quan trọng như: Bài toán thiết kế mạng
truyền thông, bài toán thiết kế VLSI (Very Large Scale
Integrated), các bài toán liên quan đến hệ thống mạng
thị 퐺. Chi phí của cây 푇, ký hiệu là 퐶(푇), là tổng
trọng số của các cạnh thuộc cây 푇, tức là ta có 퐶(푇) =
Í
푒∈퐸 (푇 ) 푤(푒).
Cho đồ thị 퐺 được mô tả như trên, bài toán tìm Cây
Steiner có chi phí nhỏ nhất được gọi là bài toán Cây
Steiner nhỏ nhất (Steiner Minimum Tree problem -
SMT) hoặc được gọi ngắn gọn là bài toán Cây Steiner
(Steiner Tree problem).
SMT là bài toán tối ưu tổ hợp của lý thuyết đồ
thị. Trong trường hợp tổng quát, SMT đã được chứng
Khác với bài toán cây khung nhỏ nhất (Minimum
Spanning Trees Problem) - đó là bài toán đơn giản.
Cây Steiner là cây đi qua tất cả các đỉnh thuộc tập
terminal 퐿 và có thể thêm một số đỉnh khác nữa thuộc
tập 푉(퐺) chứ không nhất thiết phải đi qua tất cả các
đỉnh của đồ thị.
Đóng góp chính của chúng tôi trong bài báo này
là đã đề xuất cách thức tìm kiếm lân cận mới để giải
bài toán Cây Steiner nhỏ nhất đồng thời cài đặt thực
nghiệm thuật toán trên hệ thống dữ liệu thực nghiệm
chuẩn.
II. KHẢO SÁT MỘT SỐ THUẬT TOÁN GIẢI
BÀI TOÁN CÂY STEINER NHỎ NHẤT
Hiện tại, có nhiều hướng tiếp cận giải bài toán Cây
Steiner nhỏ nhất như các thuật toán rút gọn đồ thị,
các thuật toán tìm lời giải đúng, các thuật toán tìm
lời giải gần đúng cận tỉ lệ, các thuật toán heuristic và
các thuật toán metaheuristic.
Để ngắn gọn, trong bài báo này từ đồ thị sẽ được
hiểu là đơn đồ thị, vô hướng, liên thông và có trọng
số không âm trên cạnh.
A. Các thuật toán rút gọn đồ thị
Một số nghiên cứu trình bày các kỹ thuật nhằm
giảm thiểu kích thước của đồ thị. Chẳng hạn công
trình của Jeffrey H.Kingston và Nicholas Paul Shep-
Định nghĩa 4: 1-lân cận của Cây Steiner 푇
Cho đồ thị 퐺 và 푇 là một Cây Steiner của 퐺. Ta
gọi 1-lân cận của Cây Steiner 푇 là tập tất cả các Cây
Steiner của đồ thị 퐺 sai khác với 푇 đúng một cạnh.
Nếu 푇0 là một Cây Steiner thuộc 1-lân cận của 푇 thì
ta nói 푇 và 푇0 là 1-lân cận với nhau.
Trong một số trường hợp chúng ta còn sử dụng
những lân cận rộng hơn so với 1-lân cận. Khái niệm
k-lân cận dưới đây là mở rộng trực tiếp của khái niệm
1-lân cận.
Ý tưởng chung của các thuật toán rút gọn đồ thị là
nhằm gia tăng các đỉnh cho tập terminal và loại bỏ
các đỉnh của đồ thị mà nó chắc chắn không thuộc về
Cây Steiner nhỏ nhất cần tìm. Chất lượng các thuật
toán giải bài toán SMT phụ thuộc vào độ lớn của hệ
số 푛 − |퐿|. Do vậy, mục đích của các thuật toán rút
gọn đồ thị là làm giảm thiểu tối đa hệ số 푛 − |퐿|.
Định nghĩa 5: k-lân cận của Cây Steiner 푇
Cho đồ thị 퐺 và 푇 là một Cây Steiner của nó. Ta
gọi k-lân cận của Cây Steiner 푇 là tập tất cả các Cây
Các thuật toán rút gọn đồ thị cũng được xem là
bước tiền xử lý dữ liệu quan trọng trong việc giải bài
2
Các công trình nghiên cứu, phát triển và ứng dụng Công nghệ Thông tin và Truyền thông
toán SMT. Hướng tiếp cận này là rất cần thiết khi
tiếp cận bài toán SMT bằng các thuật toán tìm lời
giải đúng [16].
của Kou, Markowsky và Berman [34].
Ưu điểm của các thuật toán heuristic là thời gian
chạy nhanh hơn nhiều so với các thuật toán meta-
heuristic. Giải pháp này thường được lựa chọn với
B. Các thuật toán tìm lời giải đúng
Các nghiên cứu tìm lời giải đúng cho bài toán SMT
như thuật toán quy hoạch động của Dreyfus và Wagner
[33], thuật toán dựa trên phép nới lỏng Lagrange của
E. Các thuật toán metaheuristic
Thuật toán metaheuristic sử dụng nhiều heuristic
kết hợp với các kỹ thuật phụ trợ nhằm khai phá không
gian tìm kiếm, metaheuristic thuộc lớp các thuật toán
tìm kiếm tối ưu.
Ưu điểm của hướng tiếp cận này là tìm được lời
giải chính xác, nhược điểm của hướng tiếp cận này
là chỉ giải được các bài toán có kích thước nhỏ; nên
khả năng ứng dụng của chúng không cao. Việc giải
đúng bài toán SMT thực sự là một thách thức trong
lý thuyết tối ưu tổ hợp.
Hiện đã có nhiều công trình sử dụng thuật toán
metaheuristic giải bài toán SMT. Chẳng hạn như thuật
toán local search sử dụng các chiến lược tìm kiếm
Hướng tiếp cận này là cơ sở quan trọng có thể được
sử dụng để đánh giá chất lượng lời giải của các thuật
toán giải gần đúng khác khi giải bài toán SMT.
Từ những hướng tiếp cận trên, bài báo này đề xuất
một thuật toán metaheuristic dạng cá thể. Cụ thể là
thuật toán Hill climbing search để giải bài toán SMT.
Cách tiếp cận này có thể giải được các bài toán SMT
có kích thước lớn, có chất lượng tốt hơn so với các
hướng tiếp cận heuristic, các thuật toán gần đúng cận
tỉ lệ và có thời gian chạy nhanh hơn so với các thuật
toán metaheuristic dạng quần thể [32].
C. Các thuật toán gần đúng cận tỉ lệ
Thuật toán gần đúng cận tỉ lệ 훼 nghĩa là lời giải
tìm được gần đúng một cận tỉ lệ 훼 so với lời giải tối
ưu.
Ưu điểm của thuật toán gần đúng cận tỉ lệ là có sự
đảm bảo về mặt toán học theo nghĩa cận tỉ lệ trên,
nhược điểm của thuật toán dạng này là cận tỉ lệ tìm
được trong thực tế thường là kém hơn nhiều so với
chất lượng lời giải tìm được bởi nhiều thuật toán gần
đúng khác dựa trên thực nghiệm.
III. THUẬT TOÁN HILL CLIMBING SEARCH
A. Ý tưởng thuật toán hill climbing search
Thuật toán MST-Steiner của Bang Ye Wu và Kun-
Thuật toán Hill climbing search là một trong những
kỹ thuật dùng để tìm kiếm tối ưu cục bộ cho một bài
toán tối ưu [1].
Thuật toán Hill climbing search là một trong những
giải pháp để giải bài toán tối ưu, đặc biệt là dạng bài
toán ưu tiên về thời gian tính như bài toán dạng thiết
kế.
D. Các thuật toán heuristic
Thuật toán heuristic chỉ ra những kinh nghiệm riêng
biệt để tìm kiếm lời giải cho một bài toán tối ưu cụ
thể. Thuật toán heuristic thường tìm được lời giải có
thể chấp nhận được trong thời gian cho phép nhưng
không chắc đó là lời giải chính xác. Các thuật toán
heuristic cũng không chắc hiệu quả trên mọi loại dữ
liệu đối với một bài toán cụ thể.
B. Sơ đồ tổng quát thuật toán Hill climbing
search
Thuật toán Hill climbing search liên tục thực hiện
việc di chuyển từ một lời giải 푆 đến một lời giải mới
푆0 trong một cấu trúc lân cận xác định trước theo sơ
đồ sau:
Các thuật toán heuristic điển hình cho bài toán SMT
3
Tập 2020, Số 1, Tháng 6
Bước 1: Khởi tạo. Chọn lời giải xuất phát 푆, tính
giá trị hàm mục tiêu 퐹(푆).
qua tất cả các cạnh 푒 ∈ 퐸(퐺) − 퐸(푇) mà không cải
thiện được chi phí của Cây Steiner 푇.
Chúng tôi đặt tên thuật toán Hill climbing search
giải bài toán SMT là HCSMT.
Bước 2: Sinh lân cận. Chọn tập lân cận 푁(푆) và
tìm lời giải 푆0 trong tập lân cận này với giá trị hàm
mục tiêu 퐹(푆0).
Bước 3: Test chấp nhận. Kiểm tra xem có chấp nhận
di chuyển từ 푆 sang 푆0. Nếu chấp nhận thì thay 푆 bằng
푆0; trái lại giữ nguyên 푆 là lời giải hiện tại.
B. Sơ đồ thuật toán HCSMT
C. Một số bàn luận thêm
a) Vấn đề tạo lời giải ngẫu nhiên ban đầu
Bước 4: Test điều kiện dừng. Nếu điều kiện dừng
thỏa mãn thì kết thúc thuật toán và đưa ra lời giải tốt
nhất tìm được; trái lại quay lại bước 2.
Cũng lưu ý rằng Cây Steiner ban đầu được khởi tạo
ngẫu nhiên thông qua hai giai đoạn như sau (dòng 3
của thuật toán HCSMT):
Bắt đầu từ cây chỉ gồm một đỉnh nào đó của đồ thị,
tiếp theo, thuật toán sẽ thực hiện 푛 − 1 bước lặp với 푛
là số đỉnh của đồ thị đang xét. Ở mỗi bước lặp, trong
số các đỉnh chưa được chọn để tham gia vào cây, ta
chọn một đỉnh kề với ít nhất một đỉnh nằm trong cây
đang được xây dựng mà không quan tâm đến trọng
số của cạnh. Đỉnh được chọn và cạnh nối nó với đỉnh
của cây đang được xây dựng sẽ được bổ sung vào cây;
thuật toán này sử dụng ý tưởng của thuật toán Prim.
C. Giải quyết vấn đề tối ưu hóa cục bộ
Vấn đề lớn nhất mà thuật toán Hill climbing search
gặp phải là nó dễ rơi vào bẫy tối ưu cục bộ, đó là lúc
chúng ta leo lên một đỉnh mà chúng ta không thể tìm
được một lân cận nào tốt hơn được nữa nhưng đỉnh
này lại không phải là đỉnh cao nhất.
Để giải quyết vấn đề này, khi leo đến một đỉnh tối
ưu cục bộ, để tìm được lời giải tốt hơn nữa ta có thể
lặp lại thuật toán Hill climbing search với nhiều điểm
xuất phát khác nhau được chọn ngẫu nhiên và lưu lại
kết quả tốt nhất ở mỗi lần lặp. Nếu số lần lặp đủ lớn
thì ta có thể tìm đến được đỉnh tối ưu toàn cục, tuy
nhiên với những bài toán mà không gian tìm kiếm
lớn; thì việc tìm được lời giải tối ưu toàn cục là một
Duyệt các đỉnh treo 푢 ∈ 푇, nếu 푢 ∉ 퐿 thì xóa cạnh
chứa đỉnh 푢 khỏi 퐸(푇), xóa đỉnh 푢 trong 푉(푇) và cập
nhật bậc của đỉnh kề với đỉnh 푢 trong 푇. Lặp lại bước
này đến khi 푇 không còn sự thay đổi nào nữa; bước
này gọi là bước xóa các cạnh dư thừa.
b) Vấn đề tìm kiếm lân cận
Thao tác tìm chu trình trong Cây Steiner 푇 sau khi
chèn thêm một cạnh 푒 được tiến hành như sau: Khi
chèn cạnh 푒 = (푢, 푣) vào 푇, duyệt Cây Steiner 푇 theo
chiều sâu bắt đầu từ 푢, lưu vết trên đường đi bằng
mảng 푝 (đỉnh trước của một đỉnh trong phép duyệt).
Tiếp theo, bắt đầu từ đỉnh 푣, truy vết theo mảng 푝
đến khi gặp 푢 thì kết thúc, các cạnh trên đường truy
vết chính là các cạnh trong chu trình cần tìm.
Để giải quyết vấn đề tối ưu cục bộ, trong bài báo
này chúng tôi đề xuất việc kết hợp thuật toán Hill
climbing search với chiến lược tìm kiếm lân cận ngẫu
nhiên để hy vọng nâng cao chất lượng lời giải của
thuật toán.
IV. THUẬT TOÁN HILL CLIMBING SEARCH
GIẢI BÀI TOÁN CÂY STEINER NHỎ NHẤT
Thuật toán HCSMT ngoài việc lời giải ban đầu
được khởi tạo ngẫu nhiên thì các Cây Steiner lân cận
tìm được trong quá trình tìm kiếm là kiểu 1-lân cận
tất định. Hiệu quả của thuật toán HCSMT có thể được
cải thiện khi ta thay đổi thứ tự các cạnh được duyệt
trong tập 퐸(퐺) − 퐸(푇); nghĩa là ta sẽ duyệt tập cạnh
này theo một hoán vị được sinh ngẫu nhiên chứ không
theo một thứ tự cố định ở tất cả các lần duyệt.
A. Ý tưởng thuật toán
Cho đồ thị vô hướng liên thông có trọng số 퐺. Bắt
đầu từ Cây Steiner 푇 của 퐺 được khởi tạo ngẫu nhiên,
chèn lần lượt từng cạnh 푒 ∈ 퐸(퐺) − 퐸(푇) vào Cây
Steiner 푇. Nếu Cây Steiner 푇 không chứa chu trình thì
cạnh 푒 không cần được xem xét; nếu 퐸(푇) ∪ 푒 chứa
một chu trình thì tìm một cạnh 푒0 trên chu trình này
sao cho việc loại nó dẫn đến Cây Steiner 푇0 có chi
phí nhỏ nhất. Tiếp theo, nếu 퐶(푇0) < 퐶(푇) thì thay
푇 bằng 푇0. Thuật toán dừng nếu trong một lần duyệt
c) Vấn đề kết hợp với tìm kiếm ngẫu nhiên
Thuật toán HCSMT chủ yếu sử dụng tính tăng
cường, thể hiện qua các chiến lược tìm kiếm Cây
4
Các công trình nghiên cứu, phát triển và ứng dụng Công nghệ Thông tin và Truyền thông
Thuật toán 1: Thuật toán HCSMT
thời điểm sau: thứ nhất là khi khởi tạo lời giải ban
đầu, thứ hai là thay đổi thứ tự duyệt của các cạnh
trong tập cạnh ứng viên (như đã đề cập ở đoạn trên),
thứ ba khi việc tìm kiếm lân cận không cải thiện qua
một số lần lặp thì tiến hành chọn ngẫu nhiên một số
cạnh của cây để bắt đầu trở lại việc tìm kiếm lân cận.
Đầu vào: Đồ thị 퐺 = (푉(퐺), 퐸(퐺))
Đầu ra : Cây Steiner có chi phí nhỏ nhất tìm
được
1 stop = false;
2 푑 = 0; //푑 là số lần tăng cường
3 푇 là Cây Steiner được khởi tạo ngẫu nhiên;
4 푇푏푒푠푡 = 푇; //lưu lại Cây Steiner tốt nhất trước khi
thực hiện chiến lược đa dạng hóa;
5 while (푑 < 푁){ // 푁 là số lần lặp định trước
V. THỰC NGHIỆM VÀ ĐÁNH GIÁ
Phần này chúng tôi mô tả chi tiết việc thực nghiệm
thuật toán HCSMT do chúng tôi đề xuất; đồng thời
đưa ra một số so sánh, đánh giá về các kết quả đạt
được.
6
푠푡표푝 = true;
7
푆 = 퐸 − 퐸(푇);
8
for (với mỗi cạnh 푒 ∈ 푆){
min = +∞;
9
10
11
12
if (cạnh 푒 có 2 đỉnh (푢, 푣) ∈ 푇){
퐹 = 푇 ∪ 푒;
Xác định chu trình Cycle trong 퐹 chứa
푒;
A. Dữ liệu thực nghiệm
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
for (với mỗi cạnh 푒0 ∈ Cycle)
if (퐶(퐹 − 푒0) < 푚푖푛){
푚푖푛 = 퐶(퐹 − 푒0);
Để thực nghiệm các thuật toán liên quan,
chúng tôi sử dụng 60 bộ dữ liệu là các đồ thị
thưa trong hệ thống dữ liệu thực nghiệm chuẩn
dùng cho bài toán Cây Steiner tại địa chỉ URL
.html[8]. Trong đó nhóm steinc có 20 đồ thị, nhóm
steind có 20 đồ thị, nhóm steine có 20 đồ thị (các đồ
thị này có tập |퐿| tối đa 1250 đỉnh).
Ghi nhận 푇0 = 퐹 − 푒0;
}
if (푚푖푛 < 퐶(푇)){
푇 = 푇0;
푠푡표푝 = false;
}
}
}
if (stop){
B. Môi trường thực nghiệm
푑++; //tăng số biến đếm tăng cường
if (퐶(푇) < 퐶(푇푏푒푠푡 )) 푇푏푒푠푡 = 푇;
while (Thỏa điều kiện đa dạng hóa){
Loại bỏ một số cạnh ngẫu nhiên của
Cây Steiner đang xét;
Chọn ngẫu nhiên một số cạnh trong
các cạnh còn lại của đồ thị 퐺 cho
đến khi cây 푇 liên thông trở lại (điều
kiện cạnh thêm vào là: Phải có đỉnh
thuộc 푇 mới được thêm vào để tránh
trường hợp thêm vào quá nhiều lần
nhưng 푇 không liên thông trở lại). Sử
dụng định nghĩa k-lân cận ở trên;
Nếu thêm quá nhiều lần mà không
làm cho 푇 liên thông trở lại, thì tiếp
tục đa dạng hóa lại với các cạnh
khác;
Thuật toán HCSMT được chúng tôi cài đặt bằng
ngôn ngữ C++ sử dụng môi trường DEV C++ 5.9.2;
được thực nghiệm trên một máy chủ ảo, Hệ điều hành
Windows server 2008 R2 Enterprise 64bit, Intel(R)
Xeon (R) CPU E5-2660 @ 2.20 GHz, RAM 4GB.
29
C. Kết quả thực nghiệm và đánh giá
Kết quả thực nghiệm của các thuật toán được ghi
nhận ở các Bảng I,II,III. Các bảng này có cấu trúc
như sau: Cột đầu tiên (Test) là tên các bộ dữ liệu
trong hệ thống dữ liệu thực nghiệm, số đỉnh (푛),
số cạnh (푚) của từng đồ thị, các cột tiếp theo ghi
nhận giá trị chi phí Cây Steiner lần lượt ứng với hai
HCSMT.
30
31
}
32
}
33 }
34 return 푇푏푒푠푡
;
Bộ tham số được xác định như sau qua thực nghiệm:
Số lần chạy mỗi bộ dữ liệu là 30, số lần tăng cường
là 50; số cạnh loại bỏ ngẫu nhiên của mỗi lần tăng
cường là 0.05×|퐸(푇)|.
Steiner lân cận. Tính đa dạng được sử dụng vào các
5
Tập 2020, Số 1, Tháng 6
Bảng I
Bảng II
KẾT QUẢ THỰC NGHIỆM THUẬT
TOÁN TRÊN NHÓM ĐỒ THỊ STEINC
KẾT QUẢ THỰC NGHIỆM THUẬT
TOÁN TRÊN NHÓM ĐỒ THỊ STEIND
HC
SMT
85
HC
Test
n
m
Heu PD
85 85
VNS TS
85 85
Test
n
m
Heu PD
VNS TS
SMT
steinc1.txt 500 625
steinc2.txt 500 625
steinc3.txt 500 625
steinc4.txt 500 625
steinc5.txt 500 625
steind1.txt
steind2.txt
steind3.txt
steind4.txt
steind5.txt
steind6.txt
steind7.txt
steind8.txt
steind9.txt
1000 1250 106 107 106 106 106
1000 1250 220 228 220 220 220
1000 1250 1570 1771 1565 1567 1565
1000 1250 1936 2174 1935 1935 1936
1000 1250 3252 3511 3250 3250 3250
144 144 144 144 144
755 762 754 754 754
1080 1085 1079 1079 1080
1579 1583 1579 1579 1579
steinc6.txt 500 1000 55
55
55
55
55
1000 2000 70
70
67
70
67
steinc7.txt 500 1000 102 102 102 102 102
steinc8.txt 500 1000 510 516 509 509 509
steinc9.txt 500 1000 715 718 707 707 707
steinc10.txt 500 1000 1093 1107 1093 1093 1093
1000 2000 103 111 103 103 103
1000 2000 1092 1287 1073 1078 1073
1000 2000 1462 1773 1448 1450 1448
steind10.txt 1000 2000 2113 2550 2111 2112 2113
steinc11.txt 500 2500 32
steinc12.txt 500 2500 46
34
48
33
46
32
46
32
46
steind11.txt 1000 5000 29
steind12.txt 1000 5000 42
29
44
29
42
30
42
29
42
steinc13.txt 500 2500 262 268 258 258 258
steinc14.txt 500 2500 324 332 323 324 324
steinc15.txt 500 2500 557 562 556 556 557
steind13.txt 1000 5000 510 643 502 502 507
steind14.txt 1000 5000 675 851 671 667 674
steind15.txt 1000 5000 1120 1437 1116 1117 1118
steinc16.txt 500 12500 11
steinc17.txt 500 12500 19
12
20
11
18
11
18
11
18
steind16.txt 1000 25000 13
steind17.txt 1000 25000 23
13
25
13
23
13
23
13
23
steinc18.txt 500 12500 120 123 115 117 115
steinc19.txt 500 12500 150 159 148 148 149
steinc20.txt 500 12500 268 268 268 267 268
steind18.txt 1000 25000 238 301 228 230 231
steind19.txt 1000 25000 325 424 318 315 321
steind20.txt 1000 25000 539 691 538 538 539
D. Đánh giá kết quả thực nghiệm
tiết ở Bảng IV.
Tương tự, kết quả so sánh thuật toán HCSMT với
steind, steine cũng đã được thể hiện chi tiết ở Bảng
V.
Mục này nhằm so sánh chất lượng lời giải của thuật
toán HCSMT với hai thuật toán heuristic: Heu [26],
lượng (SL) và tỉ lệ phần trăm (%) tương ứng với số
lượng bộ dữ liệu cho chất lượng lời giải tốt hơn (ghi
nhận bởi ký hiệu "<") hoặc cho chất lượng lời giải
bằng nhau (ghi nhận bởi ký hiệu "=") hoặc cho chất
lượng lời giải kém hơn (ghi nhận bởi ký hiệu ">") khi
so sánh thuật toán HCSMT với các thuật toán: Heu
Kết quả so sánh thuật toán HCSMT với thuật toán
cũng đã được thể hiện chi tiết ở Bảng VI.
Đánh giá chung trên toàn bộ 60 bộ dữ liệu, thuật
toán HCSMT cho chất lượng lời giải (tốt hơn, bằng,
Thuật toán HCSMT cho chất lượng lời giải (tốt hơn,
0,0%). Thuật toán HCSMT cho chất lượng lời giải (tốt
28,3%). Thuật toán HCSMT cho chất lượng lời giải
Với 20 bộ dữ liệu nhóm steinc, thuật toán HCSMT
cho chất lượng lời giải (tốt hơn, bằng, kém hơn) thuật
nhóm dữ liệu steind, steine cũng đã được thể hiện chi
6
Các công trình nghiên cứu, phát triển và ứng dụng Công nghệ Thông tin và Truyền thông
Bảng III
Bảng IV
KẾT QUẢ THỰC NGHIỆM THUẬT
TOÁN TRÊN NHÓM ĐỒ THỊ STEINE
SO SÁNH CHẤT LƯỢNG LỜI GIẢI CỦA THUẬT
TOÁN HCSMT VỚI THUẬT TOÁN HEU
Nhóm đồ
HCSMT<Heu HCSMT=Heu HCSMT>Heu
HC
Test
n
m
Heu PD
VNS TS
thị
SL
7
%
35%
SL
13
10
8
%
65%
SL
0
%
0%
SMT
steinc
steind
steine
steine1.txt 2500 3125 111 111 111 111 111
steine2.txt 2500 3125 214 214 214 216 214
steine3.txt 2500 3125 4052 4570 4015 4018 4015
steine4.txt 2500 3125 5114 5675 5101 5105 5101
steine5.txt 2500 3125 8130 8976 8128 8128 8130
10
11
50%
50%
0
0%
55%
40%
1
5%
Tổng cộng: 28
46,7%
31
51,7%
1
1,6%
Bảng V
steine6.txt 2500 5000 73
73
73
73
73
SO SÁNH CHẤT LƯỢNG LỜI GIẢI CỦA
THUẬT TOÁN HCSMT VỚI THUẬT TOÁN PD
steine7.txt 2500 5000 149 150 145 149 145
steine8.txt 2500 5000 2686 3254 2648 2649 2648
steine9.txt 2500 5000 3656 4474 3608 3605 3608
steine10.txt 2500 5000 5614 6847 5600 5602 5600
Nhóm đồ
thị
HCSMT<PD HCSMT=PD HCSMT>PD
SL
15
18
14
%
75%
SL
5
%
25%
SL
0
%
0%
0%
0%
0%
steinc
steind
steine
90%
2
10%
0
steine11.txt 2500 12500 34
steine12.txt 2500 12500 68
34
68
34
67
34
68
34
68
70%
6
30%
0
Tổng cộng: 47
78.4%
13
21.6%
0
steine13.txt 2500 12500 1312 1704 1292 1299 1312
steine14.txt 2500 12500 1752 2304 1735 1740 1735
steine15.txt 2500 12500 2792 3626 2784 2784 2799
cũng đã được thể hiện chi tiết ở Bảng VII.
steine16.txt 2500 62500 15
steine17.txt 2500 62500 26
15
27
15
25
15
25
15
25
VI. KẾT LUẬN
Bài báo này đề xuất thuật toán HCSMT dạng thuật
toán Hill climbing search để giải bài toán Cây Steiner
nhỏ nhất. Đóng góp của chúng tôi trong bài báo này
là đã đề xuất cách thức tìm kiếm lân cận kết hợp với
tìm kiếm lân cận ngẫu nhiên nâng cao chất lượng của
thuật toán. Chúng tôi đã thực nghiệm thuật toán đề
xuất trên hệ thống gồm 60 bộ dữ liệu thực nghiệm
chuẩn. Kết quả thực nghiệm cho thấy rằng thuật toán
này cho chất lượng lời giải tốt hơn hoặc bằng hai thuật
toán dạng heuristic và cho chất lượng lời giải tốt hơn,
bằng, kém hơn hai thuật toán dạng metaheuristic tốt
hiện biết trên một số bộ dữ liệu thực nghiệm chuẩn.
steine18.txt 2500 62500 608 804 583 595 594
steine19.txt 2500 62500 788 1059 768 778 768
steine20.txt 2500 62500 1349 1753 1342 1352 1342
46,6%, 26,7%).
Thời gian tính trung bình của thuật toán HCSMT
trên các đồ thị ứng với nhóm dữ liệu steinc là 2,54
giây. Tương tự với nhóm đồ thị steind là 16,78 giây,
với nhóm đồ thị steine là 214,81 giây. Thời gian chạy
chương trình ngoài việc phụ thuộc vào độ phức tạp
thời gian tính của thuật toán, còn phụ thuộc vào môi
trường thực nghiệm, kỹ thuật lập trình, cấu trúc dữ
liệu chọn cài đặt, các bộ tham số,... và thông thường,
thời gian chạy của thuật toán heuristic nhanh hơn thuật
toán metaheuristic. Tuy vậy, thời gian chạy của thuật
toán HCSMT như trên cũng cho chúng ta thông tin
tham khảo cần thiết về thuật toán này.
TÀI LIỆU THAM KHẢO
[1] Alan W. Johnson, ”Generalized Hill Climbing Algo-
rithms For Discrete Optimization Problems”, doctor
of philosophy, Industrial And Systems Engineering,
Blacksburg, Virginia, pp.1-119, 1996.
[2] Ankit Anand, Shruti, Kunwar Ambarish Singh, ”An
efficient approach for Steiner tree problem by genetic
algorithm”, International Journal of Computer Sci-
ence and Engineering (SSRG-IJCSE), vol.2, pp.233-
237, 2015.
Kết quả so sánh thuật toán HCSMT với thuật toán
7
Tập 2020, Số 1, Tháng 6
Bảng VI
on Steiner tree problems”, pp.1-36, 2015.
SO SÁNH CHẤT LƯỢNG LỜI GIẢI CỦA THUẬT
TOÁN HCSMT VỚI THUẬT TOÁN VNS
[13] Marcello Caleffi, Ian F. Akyildiz, Luigi Paura, ”On
the solution of the Steiner tree np-hard problem via
physarum bionetwork”, IEEE, pp.1092-1106, 2015.
[14] Nguyen Viet Huy, Nguyen Duc Nghia, ”Solving
graphical Steiner tree problem using parallel genetic
algorithm”, RIVF, 2008.
[15] Ondra Suchy, ”Exact algorithms for Steiner tree”,
Faculty of Information Technology, Czech Technical
University in Prague, Prague, Czech Republic, 2014.
[16] Phan Tấn Quốc, ”Rút gọn đồ thị cho bài toán Cây
Steiner nhỏ nhất”, Kỷ yếu Hội nghị Quốc gia lần thứ
IX về Nghiên cứu cơ bản và ứng dụng Công nghệ
thông tin (FAIR), Viện Công nghệ thông tin, Viện
Hàn lâm Khoa học và Công nghệ Việt Nam, Trường
Đại học Cần Thơ, ngày 04-05/08/2016, ISBN: 978-
604-913-472-2, trang 638-644, 2016.
[17] Poompat Saengudomlert, ”Optimization for Commu-
nications and Networks”, Taylor and Francis Group,
LLC, pp.1-201, 2011.
[18] Reyan Ahmed and et al, ”Multi-level Steiner tree”,
ACM J. Exp. Algor., 1(1), 2018.
[19] S.L. Martins, M.G.C. Resende, C.C. Ribeiro, and P.M.
Pardalos, ”A parallel grasp for the Steiner tree prob-
lem in graphs using a hybrid local search strategy”,
1999.
[20] Stefan Hougardy, Jannik Silvanus, Jens Vygen, ”Dijk-
stra meets Steiner: a fast-exact goal-oriented Steiner
tree algorithm”, Research Institute for Discrete Math-
ematics, University of Bonn, pp.1-59, 2015.
[21] Trần Việt Chương, Phan Tấn Quốc, Hà Hải Nam,
”Đề xuất một số thuật toán heuristic giải bài toán
Cây Steiner nhỏ nhất”, Kỷ yếu Hội nghị Quốc gia
lần thứ X về Nghiên cứu cơ bản và ứng dụng Công
nghệ thông tin (FAIR), Trường Đại học Đà Nẳng, ngày
17-18/08/2017, ISBN: 978-604-913-614-6, trang 138-
147, 2017.
[22] Trần Việt Chương, Phan Tấn Quốc, Hà Hải Nam,
”Thuật toán Bees giải bài toán Cây Steiner nhỏ nhất
trong trường hợp đồ thị thưa”. Tạp chí khoa học công
nghệ thông tin và truyền thông, Học viên Công nghệ
Bưu chính Viễn thông, Bộ Thông tin và Truyền thông,
ISSN: 2525-2224, tháng 12, trang 24-29, 2017.
[23] Tran Viet Chuong, Ha Hai Nam ”A variable neigh-
borhood search algorithm forsolving the Steiner min-
imal tree problem in sparse graphs”, Context-Aware
Systems and Applications, and Nature of Computa-
tion and Communication, EAI, Springer, pp.218-225,
2018.
Nhóm đồ HCSMT<VNS HCSMT=VNS HCSMT>VNS
thị
SL
1
%
SL
15
12
15
%
SL
4
%
steinc
steind
steine
Tổng
cộng:
5%
0%
0%
75%
60%
75%
20%
40%
25%
0
8
0
5
1
1.7%
42
70%
17
28.3%
Bảng VII
SO SÁNH CHẤT LƯỢNG LỜI GIẢI CỦA
THUẬT TOÁN HCSMT VỚI THUẬT TOÁN TS
Nhóm đồ
HCSMT<TS HCSMT=TS
HCSMT>TS
thị
SL
1
%
5%
SL
15
7
%
SL
4
%
steinc
steind
steine
75%
35%
30%
20%
40%
20%
5
25%
50%
26,7%
8
10
6
4
Tổng cộng: 16
28 46,6% 16 26,7%
[3] Arie M.C.A. Koster, Xavier Munoz (Eds), ”Graphs
and algorithms in communication networks”,
Springer, pp.1-177, 2010.
[4] Bang Ye Wu, Kun-Mao Chao, ”Spanning trees and
optimization problems”, Chapman&Hall/CRC, pp.13-
139, 2004.
[5] C. C. RIBEIRO, M.C. SOUZA, ”Tabu Search for the
Steiner problem in graphs”, Networks, 36, pp.138-
146, 2000.
[6] Chi-Yeh Chen, ”An efficient approximation algorithm
for the Steiner tree problem”, National Cheng Kung
University, Taiwan, 2018.
[7] Eduardo Uchoa, Renato F. Werneck, ”Fast local
search for Steiner trees in graphs”, SIAM, 2010.
[8] J.
E.
Beasley,
info.html
OR-Library:
mastjjb/jeb/orlib/stein-
URL
[9] J. E. Beasley, ”An SST-Based algorithm for the Steiner
problem in graphs”, Networks, 19, pp.1-16, 1989.
[10] Jeffrey H. Kingston, Nicholas Paul Sheppard, ”On
reductions for the Steiner problem in graphs”, Basser
Department of Computer Science the University of
Sydney, Australia, pp.1-10, 2006.
[11] Jon William Van Laarhoven, ”Exact and heuristic
algorithms for the euclidean Steiner tree problem”,
University of Iowa, 2010 (Doctoral thesis).
[24] Thomas Pajor, Eduardo Uchoa, Renato F. Werneck, ”A
robust and scalable algorithm for the Steiner problem
in graphs”, Springer, 2018.
[25] Thomas Bosman, ”A solution merging heuristic for
the Steiner problem in graphs using tree decomposi-
tions”, VU University Amsterdam, The Netherlands,
[12] M. Hauptmann, M. Karpinski (Eds), ”A compendium
8
Các công trình nghiên cứu, phát triển và ứng dụng Công nghệ Thông tin và Truyền thông
pp.1-12, 2015.
SƠ LƯỢC VỀ CÁC TÁC GIẢ
Trần Việt Chương
[26] Thorsten Koch, Alexander Martin, ”Solving Steiner
tree problems in graphs to optimality”, Germany,
pp.1-31, 1996.
[27] Trần Lê Thủy, ”Về bài toán Steiner”, Viện Toán học,
Viện Hàn lâm Khoa học và Công nghệ Việt Nam,
2014 (luận văn thạc sĩ).
[29] Wassim Jaziri (Edited). ”Local Search Techniques:
Focus on Tabu Search”. In-teh, Vienna, Austria, pp.1-
201, 2008.
[30] Xinhui Wang, ”Exact algorithms for the Steiner tree
problem”, doctoral thesis, ISSN 1381-3617, 2008.
[31] Xiuzhen Cheng, Ding-zhu Du, ”Steiner trees in indus-
try”, Kluwer Academic Publishers, vol.5, pp.193-216,
2004.
Sinh ngày: 01/12/1974
Nhận bằng Thạc sỹ Khoa học
máy tính năm 2005 tại Trường
Đại học Sư phạm I Hà Nội.
Hiện công tác tại Trung tâm
CNTT và Truyền thông tỉnh Cà
Mau, Sở Thông tin và Truyền
thông tỉnh Cà Mau. Lĩnh vực
nghiên cứu: Thuật toán tiến hóa
và tối ưu.
[32] Xin-she Yang. ”Engineering optimization”. Wiley,
pp.21-137, 2010.
[33] S. E. Dreyfus, R. A. Wagner, ”The Steiner Problem
in Graphs”, Networks, Vol.1, pp.195-207, 1971.
[34] L. Kou, G. Markowsky, L. Berman, ”A Fast Algorithm
for Steiner Trees”, acta informatica, Vol.15, pp.141-
145, 1981.
Điện thoại: 0913 688 477
E-mail: [email protected]
Phan Quốc Tấn
Sinh ngày: 12/10/1971
Nhận bằng Thạc sỹ Tin học
tại Trường Đại học KHTN -
ĐHQG TP.HCM năm 2002, Tiến
sỹ chuyên ngành Khoa học máy
tính tại Trường Đại học Bách
Khoa Hà Nội năm 2015.
Hiện công tác tại Bộ môn Khoa
học Máy tính, khoa Công nghệ
Thông tin, Trường Đại học Sài
Gòn. Lĩnh vực nghiên cứu: Thuật toán gần đúng.
Điện thoại: 0918 178 052
E-mail: [email protected]du.vn
Hà Hải Nam
Sinh ngày: 10/02/1975
Nhận bằng Thạc sỹ Tin học
năm 2004 tại Trường Đại học
Bách Khoa Hà Nội, Tiến sỹ năm
2008 tại Vương quốc Anh. Được
phong học hàm PGS năm 2014
Hiện công tác tại Viện Khoa
học Kỹ thuật Bưu điện, Học
viện Công nghệ Bưu chính Viễn
thông. Lĩnh vực nghiên cứu: Hệ
thống phân tán và tối ưu hóa.
Điện thoại: 091 66 34567
E-mail: [email protected]
9
Bạn đang xem tài liệu "Thuật toán tìm kiếm Hill climbing giải bài toán Cây Steiner nhỏ nhất", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
thuat_toan_tim_kiem_hill_climbing_giai_bai_toan_cay_steiner.pdf

