1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo trí tuệ nhân tạo :xây dựng chương trình cho phép tìm kiếm đường đi từ 1 điểm trên bản đồ đến 1 điểm khác trên bản đồ theo phương pháp tìm kiếm Nhành và cận

19 1,9K 17

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 480,8 KB

Nội dung

Đồ án số 15: Không gian trạng thái được mô tả là bản đồ giao thông của 1 xã, phường nào đó. Hãy xây dựng chương trình cho phép tìm kiếm đường đi từ 1 điểm trên bản đồ đến 1 điểm khác trên bản đồ theo phương pháp tìm kiếm Nhành và cậnI.Cơ sở lý thuyết:1.Bài toán tìm kiếmBài toán tìm kiếm có thể hiểu 1 cách tổng quát là: Trong 1 tập hợp rất nhiều đối tượng tìm một đối tượng thỏa mãn một số yêu cầu nào đó. Ví dụ như các trò chơi, ví dụ như cờ caro, cờ vua cũng có thể xem là 1 bài toán tìm kiếm, hoặc tìm đường đi cũng là 1 bài toán tím kiếm khá cơ bản và được tập trung nghiên cứu trong môn:” Nhập môn Trí tuệ Nhân tạo “Kỹ thuật tìm kiếm được chia ra làm 3 loại:- Kỹ thuật tìm kiếm mù: Trong bài toán này, chúng ta hoàn toàn không biết gì về các đối tượng để hướng dẫn tìm kiếm mà chỉ đơn thuần là xem xét tất cả các đối tượng của 1 hệ thống để phát hiện ra đối tượng cần tìm. Một số kỹ thuật tìm kiếm mù: Tìm kiếm theo chiều rộng (Breadth-first search) và tìm kiếm theo chiều sâu (depth-first search)- Kỹ thuật tìm kiếm có kinh nghiệm (Tìm kiếm với hàm Heuristic): Hàm Heuristic là hàm đánh giá được xây dựng nhờ vào kinh nghiệm và sự hiểu biết của chúng ta về vấn đề cần giải quyết. Một số kỹ thuật tìm kiếm có kinh nghiệm: Tìm kiếm beam, Tìm kiếm leo đồi.- Kỹ thuật tìm kiếm tối ưu: Trong không gian trạng thái cần tìm kiếm, mỗi 1 đối tượng x đều gắn với 1 số đo giá trị của nó là f(x) , mục tiêu đặt ra là tìm đối tượng có giá trị f(x) lớn nhất hoặc nhỏ nhất. Hàm f(x) được gọi là hàm mục tiêu. Một số kỹ thuật tìm kiếm tối ưu: Các kỹ thuật tìm đường đi ngắn nhất trong không gian trạng thái (Thuật toán A*, thuật toán nhánh và cận, …..), các kỹ thuật tìm kiếm đối tượng tốt nhất (Tìm kiếm leo đồi, tìm kiềm Gradient, …), tìm kiếm bắt chước sự tiến hóa (Thuật toán gene)Trong các kỹ thuật tìm kiếm, đồ án này sử dụng kỹ thuật tìm kiếm tối ưu Nhánh và cận.2. Thuật toán Nhánh và cận: Thuật toán nhánh và cận là thuật toán sử dụng tìm kiếm leo đồi với hàm đánh giá f(u)a.Tìm kiếm leo đồi Tìm kiếm leo đồi là phương pháp tìm kiếm theo chiều sâu có sử dụng hàm đánh giá Khác với phương pháp tìm kiếm theo chiều sâu, khi phát triển 1 đỉnh u, ta lựa chọn trong số các đỉnh con của u, đỉnh nào có nhiều hứa hẹn nhất thì phát triển, việc xác định đỉnh nào có nhiều hứa hẹn nhất được thực hiện bởi hàm đánh giáVD: Xét không gian trạng thái , Tìm đường

Trang 1

HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC TRÍ TUỆ NHÂN TẠO

Giáo viên hướng dẫn: Ngô Hữu Phúc

HÀ NỘI 3/2010

Trang 2

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

Báo cáo đồ án môn: Trí tuệ nhân tạo Giáo viên: Ngô Hữu Phúc

Sinh Viên: Nguyễn Thế Định – Tin học 5A

Đồ án số 15: Không gian trạng thái được mô tả là bản đồ giao thông của 1 xã, phường nào

đó Hãy xây dựng chương trình cho phép tìm kiếm đường đi từ 1 điểm trên bản đồ đến 1 điểm khác trên bản đồ theo phương pháp tìm kiếm Nhành và cận

I Cơ sở lý thuyết:

1.Bài toán tìm kiếm

Bài toán tìm kiếm có thể hiểu 1 cách tổng quát là: Trong 1 tập hợp rất nhiều đối tượng tìm một đối tượng thỏa mãn một số yêu cầu nào đó Ví dụ như các trò chơi, ví dụ như cờ caro, cờ vua cũng có thể xem là 1 bài toán tìm kiếm, hoặc tìm đường đi cũng là 1 bài toán tím kiếm khá cơ bản và được tập trung nghiên cứu trong môn:” Nhập môn Trí tuệ Nhân tạo “

Kỹ thuật tìm kiếm được chia ra làm 3 loại:

- Kỹ thuật tìm kiếm mù: Trong bài toán này, chúng ta hoàn toàn

không biết gì về các đối tượng để hướng dẫn tìm kiếm mà chỉ đơn thuần là xem xét tất cả các đối tượng của 1 hệ thống để phát hiện ra đối tượng cần tìm Một số kỹ thuật tìm kiếm mù: Tìm kiếm theo chiều rộng (Breadth-first search) và tìm kiếm theo chiều sâu (depth-first search)

- Kỹ thuật tìm kiếm có kinh nghiệm (Tìm kiếm với hàm Heuristic):

Hàm Heuristic là hàm đánh giá được xây dựng nhờ vào kinh nghiệm và sự hiểu biết của chúng ta về vấn đề cần giải quyết Một số kỹ thuật tìm kiếm có kinh nghiệm: Tìm kiếm beam, Tìm kiếm leo đồi

- Kỹ thuật tìm kiếm tối ưu: Trong không gian trạng thái cần tìm kiếm,

mỗi 1 đối tượng x đều gắn với 1 số đo giá trị của nó là f(x) , mục tiêu đặt ra là tìm đối tượng có giá trị f(x) lớn nhất hoặc nhỏ nhất Hàm f(x) được gọi là hàm mục tiêu Một số kỹ thuật tìm kiếm tối ưu: Các kỹ thuật tìm đường đi ngắn nhất trong không gian trạng thái (Thuật toán A*, thuật toán nhánh và cận,

… ), các kỹ thuật tìm kiếm đối tượng tốt nhất (Tìm kiếm leo đồi, tìm kiềm Gradient, …), tìm kiếm bắt chước sự tiến hóa (Thuật toán gene)

Trong các kỹ thuật tìm kiếm, đồ án này sử dụng kỹ thuật tìm kiếm tối ưu Nhánh và cận

2 Thuật toán Nhánh và cận:

Thuật toán nhánh và cận là thuật toán sử dụng tìm kiếm leo đồi với hàm đánh giá f(u)

Trang 3

a Tìm kiếm leo đồi

Tìm kiếm leo đồi là phương pháp tìm kiếm theo chiều sâu có sử dụng hàm đánh giá Khác với phương pháp tìm kiếm theo chiều sâu, khi phát triển 1 đỉnh u, ta lựa chọn trong số các đỉnh con của u, đỉnh nào có nhiều hứa hẹn nhất thì phát triển, việc xác định đỉnh nào có nhiều hứa hẹn nhất được thực hiện bởi hàm đánh giá

VD: Xét không gian trạng thái , Tìm đường đi từ A đến B:

- Đầu vào: Trạng thái đầu là A, trạng thái kết thúc là B

- Thực hiện thuật toán:

Bước 1: Xét A sinh ra C,D,E với h(C) = 15, h(D) = 6, h(E) = 7

h(D) nhỏ nhất nên chọn D

Bước 2 : Xét D sinh ra I, F với h(F) = 10, h(I) = 8

h(I) nhỏ nhất nên chọn I

Bước 3: Xét I sinh ra B và G

B là trạng thái kết thúc

- Thuật toán được biểu diễn thông qua cây sau:

Trang 4

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

Cài đặt thuật toán:

Procedure Hill_Climbing_Search;

Begin

Bước 1: Khởi tạo danh sách L chỉ chứa trạng thái đầu;

Bước 2: Loop do

1 If L rỗng then { thông báo thất bại; stop; }

2 Loại trạng thái u đầu danh sách L;

3 If u là trạng thái kết thúc then { thông báo thành công; stop; }

4 For mỗi trạng thái v kề u đặt v vào L sao cho các phần tử được đưa vào đầu

danh sách L có đánh giá giảm dần;

Bước 3: End;

b Thuật toán nhánh và cận

Trong thuật toán này, tại mỗi bước phát triển trạng thái u, chọn lấy trang thái v trong

số các trạng thái kề với u sao cho f(v) đạt min

Làm tương tự cho tới khi:

- V là đích, hoặc

Trang 5

- V ko có đỉnh kề, hoặc

- V có f(v) lớn hơn độ dài đường đi hiện thời

Khi đó, không phát triển đỉnh v nữa mà quay về cha của v để tìm trạng thái tốt nhất trong các trạng thái chưa xét

Ví dụ về thuật toán Nhánh và cận:

Xét không gian trạng thái trên, tìm đường đi ngắn nhất từ A đến B

Đầu vào: A là trang thái ban đầu, B là trạng thái đích

Thực hiện thuật toán:

 Phát triển A, có các đỉnh con C, D, E, F với f(C) = 24; f(D) = 13; f(E) = 21; f(F) =

27

 Chọn D, sinh các con H, E (mới) với f(H) = 25; f(E) = 19.

 Chọn E, sinh ra K, I với f(K) = 17; f(I) = 18.

Chọn K, sinh ra B với f(B) = g(B) = 21 → đường đi tạm thời là 21

 Từ B, quay về K Từ K quay về E

 Từ E, sang I, f(I) = 18 < độ dài tạm thời 21 Sinh ra K, B với f(K) = 25, f(B) = g(B)

= 19 → đường đi tạm thời là 19

 Với B, không tìm được điểm nào có chi phí tốt hơn nữa

 Vậy đường đi tối ưu có độ dài 19

Thuật toán được biểu diễn qua cây sau:

Trang 6

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

Cài đặt thuật toán:

Procedure Branch_and_Bound;

Begin

1 Khởi tạo danh sách L chỉ chứa trạng thái ban đầu;

Gán giá trị ban đầu cho cost;

1 Loop do

2.1 If L rỗng then stop;

2.2 Loại trạng thái u ở đầu danh sách L;

2.3 If u là trạng thái kết thúc then

if g(u) ≤ cost then { cost ← g(u); quay lại 2.1;}

2.4 If f(u) > cost then quay về 2.1;

2.5 For mỗi trạng thái v kề u do

{ g(v) ← g(u)+k(u,v); f(v) ← g(v)+h(v); đặt v vào danh sách L1}

2.6 Sắp xếp L1 theo thứ tự tăng của hàm f;

2.7 Chuyển L1 vào đầu danh sách L sao cho L trạng thái đầu của L1 vào đầu L;

3 End;

Nhận xét: Thuật toán nhánh và cận cũng là 1 thuật toán đầy đủ và tối ưu nếu:

- Hàm đánh giá h(u) là đánh giá thấp

Trang 7

- Độ dài các cung không nhỏ hơn 1 số dương nào đó

Từ những cơ sở lý thuyết trên, em đã xây dựng chương trình:” Tìm đường đi ngắn nhất “ dùng thuật toán Nhánh và cận:

1 Giao diện của chương trình:

Trang 8

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

- Giao diên chương trình gồm có:

 2 ô combobox dùng để lựa chọn điểm xuất phát và đich đến

 3 label để hiển thị: độ dài tối ưu, đường đi tối ưu và 1 đường đi khác trong quá trình duyệt

 1 ô picturebox dùng để hiển thị bản đồ giao thông

 2 buttton: 1 button tìm đường để bắt đầu quá trình tìm kiếm sau khi đã chọn điểm xuất phát và đich đến, 1 button thoát để thoát khỏi chương trình

 32 button dùng để đánh dấu các mốc trên bản đồ

Trang 9

2 Các bước xây dựng chương trình

a Cấu trúc dữ liệu:

Yêu cầu của bài toán:: Không gian trạng thái được mô tả là bản đồ giao

thông của 1 xã, phường nào đó Hãy xây dựng chương trình cho phép tìm kiếm đường đi từ 1 điểm trên bản đồ đến 1 điểm khác trên bản đồ theo phương pháp tìm kiếm Nhành và cận

Đầu vào: 1 bản đồ giao thông

Không gian trạng thái đang xét là 1 bản đồ giao thông:

- Các đường có mũi tên là đường 1 chiều, chiều đúng của đường là theo chiều mũi tên

Trang 10

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

- Đặt các button để xác định các điểm mốc

- Lưu tọa độ của button vào 1 mảng: vittribtn(2,n) (Chỉ số n >= số nút trên bản

đồ)

Nút A có tọa độ (Ax, Ay) sẽ được lưu trong mảng vitribtn như sau

Vitribtn(1,A) = Ax

Vitribtn(2,A) = Ay

vitribtn(1, 1) = 66

vitribtn(2, 1) = 51

vitribtn(1, 2) = 210

vitribtn(2, 2) = 6

vitribtn(1, 3) = 307

vitribtn(2, 3) = 25

vitribtn(1, 4) = 201

vitribtn(2, 4) = 67

vitribtn(1, 5) = 295

vitribtn(2, 5) = 88

vitribtn(1, 6) = 373

vitribtn(2, 6) = 101

vitribtn(1, 7) = 137

vitribtn(2, 7) = 162

vitribtn(1, 8) = 184

vitribtn(2, 8) = 171

vitribtn(1, 9) = 280

vitribtn(2, 9) = 193

vitribtn(1, 10) = 388

vitribtn(2, 10) = 216

vitribtn(1, 11) = 401

vitribtn(2, 11) = 127

vitribtn(1, 12) = 507

vitribtn(2, 12) = 242

vitribtn(1, 13) = 122

vitribtn(2, 13) = 202

vitribtn(1, 14) = 175

vitribtn(2, 14) = 222

vitribtn(1, 15) = 269

vitribtn(2, 15) = 252

vitribtn(1, 16) = 314

vitribtn(2, 16) = 266

vitribtn(1, 17) = 384

vitribtn(2, 17) = 289

vitribtn(1, 18) = 531

vitribtn(2, 18) = 273

vitribtn(1, 19) = 529

vitribtn(2, 19) = 327

vitribtn(1, 20) = 306

vitribtn(2, 20) = 291

vitribtn(1, 21) = 226

vitribtn(2, 21) = 314

vitribtn(1, 22) = 287

vitribtn(2, 22) = 336

vitribtn(1, 23) = 416

vitribtn(2, 23) = 366

vitribtn(1, 24) = 529

Trang 11

vitribtn(2, 24) = 390

vitribtn(1, 25) = 69

vitribtn(2, 25) = 336

vitribtn(1, 26) = 182

vitribtn(2, 26) = 385

vitribtn(1, 27) = 258

vitribtn(2, 27) = 413

vitribtn(1, 28) = 42

vitribtn(2, 28) = 118

vitribtn(1, 29) = 150

vitribtn(2, 29) = 57

vitribtn(1, 30) = 2

vitribtn(2, 30) = 168

vitribtn(1, 31) = 376

vitribtn(2, 31) = 260

vitribtn(1, 32) = 146

vitribtn(2, 32) = 118

Mảng vitribth lần lượt lưu tọa độ của 32 nút từ 1 đến 32 tương ứng trên bản đồ

- Việc xác định đường 1 chiều và 2 chiều trên bản đồ được giải quyết như sau:

Khi đã có các mốc là các button,

Ví dụ đường Trần Phú trên bản đồ là đường 1 chiều Chiều đi của đường Trần Phú theo hướng các button ta đã đặt vào là:

12 -> 10 -> 9 -> 8 -> 7

Vậy: Ta chỉ đi được từ 12 đến 10 chứ ko đi được từ 10 đến 12

Đường Hùng Vương là đường 2 chiều, Chiều đi của đường Hùng Vương theo hướng các button:

14 -> 8 -> 4 -> 2

Hoặc: 2 -> 4 -> 8 -> 14

Vậy: Ta có thể đi từ 14 đến 8 hoăc 8 đến 14

Vì vậy: Ta dùng mảng duong2chieu(n,n) (Chỉ số n >= số nút trên bản đồ) để xác

định có đường đi hay ko từ nút A đến nút B Nếu từ nút A có thể đi đến nut B, ta cho giá trị duong2chieu(A,B) = 1, Nếu từ nút A ko thể đi đến nút B thì ta cho giá trị duong2chieu(A,B) = 0

Ví dụ: Vậy nếu duong2chieu(A,B) = 1 và duong2chieu(B,A) = 1 thì đường AB là

đường 2 chiều Nếu duong2chieu(A,B) = 1 nhưng duong2chieu(B,A) = 0 thì đường A đến B là đường 1 chiều, chỉ đi được từ A đến B và ko đi được từ B đến A

Việc gán vào mảng duong2chieu(50,50) này đồng thời cũng biến bản đồ ta có thành

1 đồ thì không gian trạng thái với các nút và đường đi giữa chúng

Trong bài toán cụ thể này, mảng duong2chieu có giá trị như sau:

Trang 12

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

duong2chieu(2, 29) = 1

duong2chieu(29, 2) = 1

duong2chieu(32, 28) = 1

duong2chieu(7, 32) = 1

duong2chieu(32, 29) = 1

duong2chieu(29, 32) = 1

duong2chieu(30, 13) = 1

duong2chieu(30, 28) = 1

duong2chieu(28, 30) = 1

duong2chieu(4, 29) = 1

duong2chieu(29, 4) = 1

duong2chieu(1, 29) = 1

duong2chieu(29, 1) = 1

duong2chieu(7, 28) = 1

duong2chieu(1, 28) = 1

duong2chieu(28, 1) = 1

duong2chieu(4, 2) = 1

duong2chieu(2, 4) = 1

duong2chieu(4, 8) = 1

duong2chieu(8, 4) = 1

duong2chieu(8, 7) = 1

duong2chieu(2, 3) = 1

duong2chieu(3, 2) = 1

duong2chieu(4, 5) = 1

duong2chieu(5, 4) = 1

duong2chieu(3, 5) = 1

duong2chieu(5, 3) = 1

duong2chieu(6, 3) = 1

duong2chieu(3, 6) = 1

duong2chieu(5, 6) = 1

duong2chieu(6, 5) = 1

duong2chieu(5, 9) = 1

duong2chieu(9, 5) = 1

duong2chieu(9, 8) = 1

duong2chieu(6, 11) = 1

duong2chieu(11, 6) = 1

duong2chieu(12, 11) = 1

duong2chieu(11, 12) = 1

duong2chieu(12, 18) = 1

duong2chieu(18, 12) = 1

duong2chieu(18, 19) = 1

duong2chieu(19, 24) = 1

duong2chieu(10, 11) = 1

duong2chieu(11, 10) = 1

duong2chieu(10, 9) = 1

duong2chieu(7, 13) = 1

duong2chieu(13, 7) = 1

duong2chieu(8, 14) = 1

duong2chieu(14, 8) = 1

duong2chieu(13, 14) = 1

duong2chieu(14, 15) = 1

duong2chieu(14, 21) = 1

duong2chieu(21, 14) = 1

duong2chieu(13, 25) = 1

duong2chieu(25, 13) = 1

duong2chieu(9, 15) = 1

duong2chieu(15, 9) = 1

duong2chieu(15, 16) = 1

duong2chieu(16, 17) = 1

Trang 13

duong2chieu(17, 19) = 1

duong2chieu(16, 20) = 1

duong2chieu(20, 16) = 1

duong2chieu(17, 20) = 1

duong2chieu(20, 17) = 1

duong2chieu(21, 15) = 1

duong2chieu(26, 21) = 1

duong2chieu(25, 26) = 1

duong2chieu(26, 25) = 1

duong2chieu(27, 26) = 1

duong2chieu(20, 22) = 1

duong2chieu(22, 20) = 1

duong2chieu(23, 22) = 1

duong2chieu(22, 27) = 1

duong2chieu(27, 22) = 1

duong2chieu(24, 23) = 1

duong2chieu(18, 31) = 1

duong2chieu(31, 16) = 1

duong2chieu(17, 31) = 1

duong2chieu(31, 17) = 1

duong2chieu(10, 31) = 1

duong2chieu(31, 10) = 1

Sau khi gán giá trị cho mảng duong2chieu(n,n) ta có không gian trạng thái như sau:

Trang 14

Thuật toán Nhánh và cận

Giáo viên hướng dấn : Ngô Hữu Phúc Sinh viên : Nguyễn Thế Định – Tin học 5A

Và bây giờ, bài toán tìm đường đi trên bản đồ chính là bài toán tìm đường đi trên không gian trạng thái trên

b Thuật toán:

Thuật toán tìm kiếm Nhánh và cận như đã trình bầy ở phần Cơ sở lý thuyết

đầu tiên cần xác định được điểm xuất phát và đích đến

- Nút xuất phát được nhập ở combobox1

- Dích đến được nhập ở combobox2

Hàm mục tiêu f(u) dùng để so sánh trong hàm Heuristic

F(u) = g(u) + h(u)

G(u): Quãng đường đi từ điểm xuất phát đến u

H(u): Giá trị ước lượng quãng đường từ u đến đích – Trong bài toán này h(u) là khoảng cách đường chim bay từ u đến đích

Trang 15

Từ yêu cầu đó, ta cần có 1 hàm tính khoảng cách giữa 2 điểm

Public Function tinhkc( ByVal ox1 As Double , ByVal oy1 As Double , ByVal ox2 As Double , ByVal oy2 As Double ) As Double

Return (Math.Sqrt((ox2 - ox1) * (ox2 - ox1) + (oy2 - oy1) * (oy2 - oy1)))

End Function

Hàm tinhkc dùng để tính khoảng cách giữa 2 điểm A và B với tham số truyền và là ox1: tọa độ x của A,

oy1: tọa độ y của A,

ox2: tọa độ x của B

oy2: tọa độ y của B

Công thức tính quảng cách:

Math.Sqrt((ox2 - ox1) * (ox2 - ox1) + (oy2 - oy1) * (oy2 - oy1)))

Hàm trả về giá trị khoảng cách giữa A và B theo kiểu double

Hàm duyệt trạng thái con:

Public Sub dttcon(ByVal cha As Integer, ByVal gcha As Double)

nhocha = cha

demmc = 0

Dim kcconcha As Double

For i = 1 To 32

If duong2chieu(cha, i) = 1 Then

mangcon(0, demmc, cha) = i ' Gán nút con i vào mảng con

kcconcha = tinhkc(vitribtn(1, cha), vitribtn(2, cha), vitribtn(1, i), vitribtn(2, i)) ' Khoảng cách giữa nút con i và nút cha

mangcon(1, i, cha) = gcha + kcconcha 'Giá trị hàm G(i) hiện tại = G(cha) + kc từ nút con i đến cha

mangcon(2, i, cha) = tinhkc(vitribtn(1, i), vitribtn(2, i), vitribtn(1, dich), vitribtn(2, dich)) ' h(i) - Giá trị ước lượng từ nút con

i đến đích

demmc += 1

End If

Next

' Nếu số nút con > 1 thì xắp xếp các nút giảm dần theo giá trị f

Dim a, b, fa, fb As Double

If demmc > 1 Then

For i = 0 To demmc - 1

For j = i + 1 To demmc - 1

a = mangcon(0, i, cha)

b = mangcon(0, j, cha)

fa = mangcon(1, a, cha) + mangcon(2, a, cha)

fb = mangcon(1, b, cha) + mangcon(2, b, cha)

If fa < fb Then

temp = a

a = b

Ngày đăng: 25/03/2014, 21:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w