1.1. Nguồn dữ liệu
Các bộ dữ liệu đều được lấy từ trang web
http://www.elib.zib.de/steinlib/steinlib.php.
Đây là một trang web có chứa hàng nghìn các bộ dữ cho một số loại bài toán NP-khó trong đó có bài toán cây Steiner các loại. Các bộ test của trang web này được cộng đồng những người nghiên cứu về bài toán cây Steiner sử dụng rất phổ biến.
Các bộ test được xuất bản ở đây đã được các tác giả kiểm tra kỹ lưỡng về tính liên thông, logic kết nối của các cạnh... vì vậy nó là những bộ dữ liệu đáng tin cậy.
Hầu hết các bộ dữ liệu đều có giá trị tối ưu tương ứng đi kèm theo nên thuật toán di truyền sẽ có điều kiện để cải tiến chất lượng của các phương án mà thuật toán tìm được.
Các bộ dữ liệu này được các tác giả trên thế giới sử dụng rộng rãi trong các thuật toán xấp xỉ khác nên sẽ rất thuận tiện để so sánh hiệu quả của thuật toán di truyền trong luận văn này và các giải thuật khác.
1.2. Đặc điểm dữ liệu
Tất cả các bộ dữ liệu đều là non-Euclide. Chúng được chia làm hai loại như sau:
Loại thứ nhất gồm ba bộ I160, I320, I640 mỗi bộ bao gồm 100 file dữ liệu của các đồ thị 160, 320 và 640 đỉnh. Sự khác biệt giữa mỗi file dữ liệu nằm trong một bộ nằm ở chỗ số điểm terminal, số cạnh và các trọng số của đồ thị khác nhau. Mỗi một file dữ liệu nằm trong các bộ dữ liệu này đều có tên được quy định như sau: |V|-tei trong đó |V| là số đỉnh của đồ thị, tùy thuộc vào bộ dữ liệu mà |V| có thể mang các giá trị 160, 320, 640. Giá trị t cho biết mật độ các điểm terminal, t có thể mang 4 giá trị khác nhau 0, 1, 2, 3 tương ứng với số điểm terminal được tính theo 4
công thức khác nhau: , , và . Thông số e biểu diễn
cho mật độ các cạnh của đồ thị, tương ứng với 5 giá trị 0, 1, 2, 3, 4 của e là 5 loại mật độ cạnh khác nhau được tính theo những công thức , , , 2|V|, và . Trong mỗi một bộ, với một cặp (t, e) sẽ có 5 đồ thị khác nhau, thông số i được đánh số từ 1 ÷ 5 dựng để phân biệt các đồ thị có cùng số cạnh và số điểm terminal này. Ví dụ: nếu một bột test có tên 160.141 thì nó có số đỉnh là 160, số cạnh là 2544 và 12 điểm terminal.
Loại thứ hai là một số đồ thị được dựng từ những bài toán trong thực tế. Đồ thị trong file dữ liệu berlin.stp là đồ thị đầy đủ kết nối 52 thắng cảnh ở thành phố Berlin của nước Đức, đồ thị trong file dữ liệu brasil.stp là đồ thị kết nối 58 thành
phố ở Brasil trong đó những thành phố từ cấp tỉnh trở lên được chọn làm điểm terminal và đồ thị trong file dữ liệu world.stp là đồ thị mô tả kết nối 666 thành phố trên thế giới trong đó các thủ đô được chọn làm điểm terminal. Cả ba bộ test trên đều được lấy từ các bộ test của bài toán người du lịch – một bài toán NP-khó kinh điển khác.
1.3. Định dạng file dữ liệu vào
Tất cả các file dữ liệu cho bài toán cây Steiner trên đồ thị đều có một định dạng chung bao gồm ít nhất hai phần như sau:
SECTION Graph: Đây là phần mô tả đồ thị, thông tin trong phần này bao gồm số lượng đỉnh của đồ thị, số lượng cạnh của đồ thị và liệt kê các cạnh của đồ thị. Mỗi cạnh của đồ thị được cho trên một dòng theo định dạng:
E[A] Đỉnh đầu Đỉnh cuối Trọng số
Trong mỗi dòng mô tả một cạnh sẽ có chữ E đầu tiên cho biết đây là một cạnh(Edge) của đồ thị vô hướng để phân biệt với một cung(Arc) trong đồ thị có hướng.
SECTION Terminals: Đây là phần mô tả về các điểm terminal, dòng đầu tiên trong phần này cho biết số lượng đỉnh terminal, mỗi dòng tiếp theo sẽ mô tả 1 đỉnh terminal theo định dạng:
T Số hiệu đỉnh
SECTION Coordinates: Ngoài hai section graph và terminals, một file dữ liệu còn có thể có thêm section mô tả tọa độ của các đỉnh của đồ thị. Tuy nhiên, phần tọa độ này chỉ dựng nếu muốn vẽ hiển thị đồ thị. Vì yêu cầu vẽ hiển thị không phải là một yêu cầu bắt buộc khi giải một bài toán tối ưu hóa nên section này không nhất thiết phải xuất hiện trong mọi file test. Nếu có, tọa độ của mỗi đỉnh sẽ được ghi trên 1 dòng theo định dạng:
DD[DDD] Số hiệu đỉnh Tọa độ X Tọa độ Y [Tọa độ Z]
Trong mỗi dòng mô tả tọa độ sẽ được bắt đầu bằng một nhóm chữ cái: DD nghĩa là tọa độ được biểu diễn trong không gian hai chiều còn DDD nghĩa là tọa độ được biểu diễn trong không gian ba chiều.
Ví dụ: Để hiểu rõ hơn về định dạng của một file dữ liệu ta quan sát ví dụ với đồ thị gồm bảy đỉnh được nối với nhau bằng chín cạnh, các cạnh đều có trọng số bằng một như sau:
Hình 4.1. Đồ thị minh họa cho file dữ liệu. File dữ liệu tương ứng với đồ thị trên được viết như sau:
SECTION Graph Nodes 7 Edges 9 E 1 2 1 E 1 4 1 E 1 6 1 E 2 3 1 E 3 4 1 E 4 5 1 E 5 6 1 E 6 7 1 E 7 2 1 END SECTION Terminals Terminals 4 T 1 T 3 T 5 T 7 END SECTION Coordinates DD 1 80 50 DD 2 30 50 DD 3 55 5 DD 4 105 5 DD 5 130 50 DD 6 105 95 DD 7 55 95 END EOF