Điều kiện đầu tiên mà ta cần cho tính tối ưu của A* là hàm h(n) phai
một hàm heurisrie khả chấp (admissible heuristie). Một heuristic duge goi là khả chấp nếu như nó không bao giờ ước lượng vượt quá chỉ phí thực sự.
stimate) dé đi từ nút m đến nút mục tiêu. Vì g(n) là chỉ phí thực sự từ đến nỳt n theo đường đi hiện tại, và ƒ(n) = ứ(n) + hớn), nờn ƒ(n) không bao giờ ước lượng quá vượt quá chỉ phí thực sự của lời giải theo đường đi hiện tại thông qua n.
lạc quan vì ta nghĩ chỉ phí của lời giải
nhỏ hơn chỉ phí thực sự. Một ví dụ trực quan cho him heuristic khả chấp là sử dụng khoảng cách theo đường chỉm bay để ước lượng chiều dài của đường đi từ nút hiện tại đến nút mục tiêu trong bài toán tìm đường đi trên bản đồ. Khoảng cách theo đường chỉm bay là một heuristie khả chấp vì đường,
thăng là đường nói hai điểm trong không gian Euclid có chiều dài ngắn nhất.
Điều kiện thứ hai cho hàm heuristic la tinh nhat quan (consistency hay
con ggi la tinh don diéu — monotonicity). Điều kiện này chỉ cần khi áp dụng giải thuật A* cho phiên bản tim kiếm trên đồ thị. Một him heuristic h(n) duge
gọi là nhất quán nếu với mỗi nút œ và với mỗi nút n" được sinh ra từ n bằng
hành động a, chỉ phí ước lượng từ m đến mục tiêu không bao giờ lớn hơn chỉ phi ước lượng từ n" ông với chỉ phí hành động a:
h(n) < c(n,a,n') + h(n’) (33)
Đây là một dạng của bắt đẳng thức tam giác tổng quát: tổng hai cạnh
tam giác luôn lớn hơn cạnh Voi m6t heuristic kha chap, ba
ày sẽ vỉ phạm tính
hín) luôn nhỏ hơn chỉ phí thực sự từ na đến G. Hình 3.3 minh hoạ tính nhất quin cia heuristic.
Có thể dễ dàng thấy rằng tất cả các hàm heuristic nhất quán đều khả
(chứng minh xem như bài tập). Vì thé tính nhất quán chặt hơn tính khả
chấp. Tuy nhiên cũng khá khó đẻ tạo ra một hàm heuristic khả chấp nhưng
không nhất quán. Tắt cả heuristic khả chấp mà ta thảo luận trong chương này đều nhất quán.
h(n) < c(n,a,n’) + h(n’)
hey) An’)
—
Hình 3.3 Tính chất của heuristic nhất quán.
3.1.3 Tính tối ưu của A*
Như đã để cập bên trên, A* c sau) phiên bản tìm
trên cây (EreeSearch) của A* sẽ tối ưu niều h(n):khả chấp, trong khi phiên bản tìm kiếm trên đồ thị (gzaphSeazch) sẽ tối ưu riểu h(n) nhất quán.
3.1.3.1 Tinh t6i wu cia A* phién ban treeSearch
.._. Nếu hín) khả chấp, giải thuật Ä* phiên bản treeSearch sẽ tối tru.
Điều này có thể được chứng minh đơn giản như sau:
Goi G' 14 nuit mye tiêu gần tối ưu (G7 =>state là một trạng thái mục
tiêu và đường đi từ gốc đến G' không phải là đường đi tối ưu), ta có:
ƒ() = g(6) + hG) > Cc (34)
vì g(6°) > €° và h(Œ)
Gọi n là một nút bắt kỳ trên đường đi tối ưu, do h(n) khả chấp nên:
ƒ(m) = gín) + hím) < gín) + h”() = €* G4)
Nhu thé, tắt cả các nút n trên đường đi tối ưu sẽ được triển khai trước.
6'. Chính vì vậy mà giải thuật A* phiên bản treeSearch sẽ tìm được đường đi tối ưu.
3.1.3.2 Tính tối ưu của A* phiên bản graphSearch
Nếu hín) nhất quán (hoặc đơn điệu) thì giải thuật A* phiên bản
graphSearch sé t6i ưu. Cơ sở để chứng minh tính tối ưu của giải thuật A*
trong trường hợp này cũng tương tự như tìm kiếm với giá thành đồng nhất, với g được thay bằng f.
Trước hết ta cần chứng minh:
làm heuristie h(n) nhất quán thì giá trị ƒ (n) của các nút trên một đường đi bắt ky từ gốc đến n sẽ không giảm.
Điều này có nghĩa là nếu P = (r,m,nạ,...,n,-;,n) là một đường đi
từ gốc đến m thì:
ƒ() > fF (mq) 2 fa) = fu) = FO) 434)
Ta chứng mỉnh trực tiếp từ định nghĩa của tính nhất quán. Giả sử mỶ là
nút con của m ta cần chứng minh:
fa) sf@') G5)
Do n’ la nut con cua nut n nên:
gi g(n) + c(n,a,n’) (3.6)
Hơn nữa, từ định nghĩa tính nhất quán:
hín) < cứu,a,n') + h(n’)
© g(m) +hín) < gín) + cína,m) + hím) G7)
® 7@)<ƒ@)
Hình 3.4 minh họa cho điều này. Chỉ phí ƒ(m) và ƒ(n") có chung phần g0)
@ tue itu
Hinh 3.4 Hàm f{n) không giảm trên đường đi Bước thứ hai là cần phải chứng minh:
„_ Mỗi khi A* chọn nút m để triền khai, ta đã tìm thấy được đường đi ngắn
nhất từ nút gốc đến n,
'Ta chứng minh bằng phản chứng:
Giả sử, khi ta chon n để triển khai, đường đi hiện tại từ nút gốc đến n chưa phải là đường đi tối ưu.
Như thế sẽ tồn tại một đường đi khác đi từ nút gốc đến một nút chưa.
được triển khai nằm trên đường biên và đi đến nút n với chỉ phí nhỏ hơn chỉ phí của đường đi hiện tai từ gốc đến nút m. Vì ƒ không giảm trên đường đi,
nên f0") < f(n). Điều này trái với giả thiết là m có ƒ(n) nhỏ nhất trong các
nút trên đường biên.
Từ hai nhận xét trên, ta suy ra chuỗi các nút được triển khai bằng giải A* không giảm theo ƒ(n). Vì thế, nút mục tiêu đầu tiên được tìm thấy sẽ A tữa, vì h(G) = 0 nén f(G) = g(G)
hay ƒ(6) chính là chỉ phí thực sự từ nút gốc đến Œ.
Trường hợp h(n) la một hàm heuristic khả chấp nhưng không nhất
quán ta có thể mở rộng giải thuật A* phiên bản graphSearch dé cho phép mot nút trong exo1ored có thể được triển khai lai nếu ta tìm thấy môt đường đi
mới tốt hơn đi it mở rộng này được trình bày trong hình 3.5.
Trường hợp (**) thuật này sẽ không bao giờ xảy ra nếu h(n) nhất . Néu A(n) nhất quán, theo chứng mỉnh trên khi chọn một nút n dé triển khai g(n) đã uu. Vi thé không tồn tại một đường đi nào khác nữa tốt hơn nữa nên một khi n đã được đưa vio expolored, né sé không “bị” mang
ra để triển khai lại.
_ Chú ý: một số tác giả phát biểu rằng nếu h(n) khả chấp nhưng không,
nhất quán, có thê tạo ra một heuristic nhất quán bằng cách sử dụng kỹ thuật pathmax.
f(r!) = max(g(n') + h(n’), F(n))
Hay xây dựng hàm heuristic h'(n) từ h(n) như sau
(na) = max(h(n),h'(n) — cứn, a,n))
lột heuristic không nhất quán trở nên nhất thể đảm bảo ƒ(n) không giảm trên một
đường đi bắt kỳ
Ví dụ bên dưới cho thấy lời giải tìm được sẽ không tối ưu mặc dù đã áp dụng kỹ thuật pathmax. Ta thấy rằng nút p sẽ được triển khai trước do
ƒ(p)=5+6=11 nhỏ hơn ƒ(g)=2+10=12 và p được đưa vào explored. Nut p khong edn “co hội” để cập nhật lại g(p) = g(q) + 2 = 4.
flp) = 5+6 = 11 pile =6
4 h(g) = 10 fa)=2o=i2 9)
PNode AStarSearch(PState init state) (
PNode root = new Node()?
root->state = init state;
root->parent = NULL:
root->f = 0;
frontier. insert (root);
explored.clear();
while (!empty(frontier)) {
//Lây 1 nút từ đường biên có £{n) nhỏ nhật //và loại bò nó ra khỏi đường biên
Node* node frontier.pop()#
Af (node là nút mục tiêu) return node;
insert (node, explored) ;
for (child 1a it con của node) {
child->g = node->g + stepCost (node, child);
child->h = estimate (child->state) ; child->f = child->g + child->h;
aif (child->state không thuộc frontidr và
chỉld->state không thuộc èxplored) {
child->parent = -node;
frontier. insert (chila};
} elge-ffp(child-Sstatd nam trong-duéng biên.
va cé_g-r6n hon child->g)
Thay ‘thé nut nam trén dudng bien bang child else if (ch¥id-sstate nam trong explored
va cé g lén hon child->g) {
Loại bỏ nút chứa child->state
ra khỏi explored frontier. insert (child);
return NULL; //Thất bại, không tìm thấy lòi giải }
Giải thuật A* với tái triển khai nút
Hình 3.
Việc him chi phi f khong giảm trên dường đi cũng có nghĩa là chúng ta có thể về các đường biên trong không gian trang thái. Hình 3.6 minh hoạ điều này. Bên trong đường biên nhãn 400, tat ca cae nút đều có ƒ(n) < 400, và tương tự như vậy cho các đường biên khác. Vì A* luôn triển khai nút trên
đường biên có ƒ(n) nhỏ nhất, nên ta có thể thấy rằng A* sẽ mở rộng từ nút sốc, thêm các nút trong các vòng đồng tâm với bán kính chỉ phí ƒ tăng dần.
g-contours of
uniform-cost search
No
Hình 3.6 Các đường biên với chỉ phi f(n) khée nhau trong bai toán tìm đường đi từ Arad đến Bucharest
Với giải thuật tìm kiếm chỉ phí đồng nhất (A* với h = 0), các vòng đồng tâm có “hình tròn” bao quanh nút gốc, Với các hàm heurisic cảng chính xác, các vòng này sẽ bị kéo về phía nút mục tiêu và tập trung vào đường đi tối ưu. Nếu €* là chỉ phí của đường di của lời giải tối ưu ta có thẻ phát biểu rằng:
ô_ A* triển khai tất cả cỏc nỳt cú f(n) < C*
+ A* có thể triển khai một số nút trên “đường biên mục tiêu” với
f(n) = €* trước khi chọn nút mục tiêu để triển khai.
Tính đầy đủ của A* đòi hỏi số nút có chỉ phí nhỏ hơn hoặc bằng C*
phải hữu hạn. Nếu không có thé ta sẽ không chọn được nút mục tiêu để triển khai vì chưa triển khai hết các nút có ƒ < C*. Điều kiện này sẽ đúng nếu tắt cả
các chỉ phí của hành động đều lớn hơn epsilon và hệ số phân nhánh b hữu hạn.
Chú ý rằng A* sẽ không triển khai các nút có ƒ > €° mặc dù có thể nó là nút con của nút gốc. Ta nói rằng trong trương hợp này, cây con có nút gốc là nút này đã bị cất tia (pruned). Khai nigm cắt tỉa - loại bỏ một số trường hợp, mà ta nghĩ rằng nó không dẫn đến lời giải tối ưu - là một khái niệm rất quan
trọng trong nhiều lĩnh vực trí tuệ nhân tạo.
Nhận xét cuối cùng là trong số các giải thuật cùng loại - các giải th mở rộng các đường di từ gốc và sử dụng cùng thông tin heuristie — A* là hiệu
với bắt cứ hàm heuristic nhất quán nào. Điều này có nghĩa là, không.
có giải thuật tối ưu nào đảm bảo triển khai ít nút hơn A*. Bởi vì bắt cứ giải thuật nào không triển khai các nút có ƒ(n) < €* sẽ có nguy cơ bỏ qua lời giải
tôi tru.
trả lời cho các yêu cầu về tìm kiếm của
trạng thái nằm trên đường biên mục tiêu.
giải. Với các vấn đề có chỉ phí cho các
hành động là hằng số, độ tăng trưởng khi thực thi là một hàm theo độ sâu của lời giải, đ được phân tích theo /6i tuyét ddi (absolute error) hoặc [di “ương đổi (relative error) cua ham heuristic. L6i tuyệt đối được định nghĩa bằng h" — h trong đó h° là chỉ phí thực để đi từ gốc đến mục tiêu và lỗi tương đối được định nghĩa bằng (h` — h)/h".
Không có nghĩa rằng A* là chúng ta. Với hầu hết các bài toán,
luỹ thừa với chiều dài đường đi đến |
3.1.4 Hàm heuristic
Trong phần này, chúng xem xét các heurisic cho bài toán 8-puzzle,
một phiên bản đơn giản hơn của bài toán 15-puzzle, để soi rọi vào bản chất
của các heuristic trong trường hợp tổng quát. Bài toán 8-puzzle là một trong những bài toán tìm kiém heuristic sém nhật. Tương tự như bài toán 15-puzzle, ợ theo chiều ngang và dọc cho đến khỉ đạt được được cầu hình mong muốn. Hình 3:7 ình Hy! một trường hợp.
7Ị2 |4 tae
5 6 3|4|5
8 |3 |1 6|7|8
Trạng thái bắt đầu Trạng thái mục tiêu.
Hình 3.7 Bài toán 8-puzzle
Chỉ phí lời giải trung bình với khởi tạo ngẫu nhiên là 22 bước. Hệ số phân nhánh trung bình là 3. Khi ô trồng ở chính giữa, có 4 phép di chuyển,
nhưng nếu nó ở góc, chỉ có 2 phép di chuyển hợp lệ và khi nó ở cạnh có 3 phép di chuyển hợp lệ. Điều này có nghĩa là nếu tìm kiếm vét cạn trên cây có
độ sâu 22, ta sẽ duyệt qua khoảng 33? ~ 3.1 x 10" trạng thái. Nếu sử dụng.
phiên bản graphSearch, sé trang thái sẽ giảm xuống khoảng 170,000 lẫn vì chỉ có 91/2 = 181.440 trạng thái phân biệt có thé đi đến từ trạng thái bắt đầu.
Con số này còn có thể xử lý được, nhưng nếu bài toán mở rộng đến 15 ô, số
trang thái sẽ khoảng 10”, Vì thế, việc kế tiếp của chúng ta là tìm một hàm heuristic tốt. Nếu ta muốn tìm lời giải tốt nhất bằng giải thuật A*, ta cân một ham heuristic kha chấp (không bao giờ ước lượng quá số bước cần thiết để đạt đến mục tiêu). Có một lịch sử khá dài về các him heuristic như vậy cho bài
toán 8-puzzle, Có hai him heuristic thudmg được sử dụng là:
ôhà = số ụ đặt sai vị trớ. Vớ dụ như trong hỡnh 3.7, tắt cả 8 ụ đều sai vị trớ,
vì vậy trang thái bắt đầu có #ị = 8. hy la ham heuristic khả chấp vì rõ ràng mỗi ô sai vị trí cần phải di chuyển ít nhất một lần dé về đúng vị trí.
ô_ hạ = tổng khoảng cỏch của cỏc ụ đến vị trớ đỳng của nú trong trạng thỏi mục tiêu. Vì các ô không thể di chuyển theo đường chéo, khoảng cách ta sử dụng là tổng khoảng cách theo chiều ngang và khoảng cách theo chiều dọc. Khoảng cách này còn được gọi là khoảng cách Manhattan hay khoảng cách Lị. h› cũng khả chấp vì mỗi lần di chuyển ta chỉ có thé di chuyển một ô một bước theo hướng gần với vị trí đúng của nó nhất.
Trong hình 3.7 tổng khoảng cách Manhattan của các ô trong trạng thái bắt đầu đến vị trí đúng của nó trong trạng thái kết thúc là:
hạ =3+1+2+2+2+3+3+2=18 @8)
Như mong đợi, không có hàm nao cho kết quả vượt quá 26.
3.1.5 Ảnh hưởng của độ chính xác hàm heuristic lên hiệu quả tìm kiếm
Một cách để đặc trưng chất lượng của hàm heuristic là hệ số phân
lánh thực sự (effective branching factor) b*. Néu tong số nút được sinh ra bằng giải thuật A* cho một bài toán là M và độ sâu của lời giải là d, thì b* là hệ số phân nhánh mà một cây đồng nhất có cùng độ sâu d phải có để chứa N +
1 nút. Vì vậy:
N+1=14+b°+ (0)? +4 (4 @9)
Ví dụ, nếu A* tìm được lời giải ở độ sâu 5 và sinh ra 52 nút, thì hệ số phân nhánh thực sự của nó là 1.92. Hệ số phân nhánh thực sự thay đổi tuỳ theo bài toán, nhưng thường khá ồn định đối với các bài toán đủ khó. Sự tồn tại của hệ số phân nhánh thực sự được suy ra từ kết quả đã được đẻ cập trong phần
trước là số nút được triển khai bằng A* tăng luỹ thừa theo độ sâu của lời gi
Vi thế, các thực nghiệm tính toán giá trị b* trên các tập nhỏ của bài toán có thị cung cấp một hướng dẫn đủ tốt đền tính hữu dụng của ham heuristic. Một hàm heuristic được thiết kế tốt sẽ có hệ số phân nhánh thực sự, b, gần với 1 cho phép giải các bài toán lớn với chỉ phí tính toán hợp lý.
iểm tra hai ham heuristic hy va hy, ngudi ta đã sinh ra 1200 bài
chiều dài lời giải từ 2 đến 24 và giải chúng với tim kiếm sâu hạ. Bảng 3.1 cho số nút trung bình quả cho thay rằng hạ tốt hơn hị và
Thậm chí với bải toán có.
50,000 lan.
toán ngẫu ni
dan và tìm kiếm A* trên
được sinh ra theo từng chiến lược.
nhanh hơn rất nhiều so với tìm
đ =12, A* với hạ nhanh hơn tim ki
Bảng 3.1 So sánh cl
dan (IDS) va A* tìm kiếm và hệ số phân nhánh hiệu quả của tìm kiếm sâu.
| Chỉ phí tìm kiếm Hệ số phân nhánh hiệu quả — j
củ IDSỈ AM) | A*®h) IDS[ A*(h)[ - A*(m),
2 10 6] 6 245 179 129 |
4 112 l3 12 287 148 1.45 |
6 680 20 18 2.73 134 130 |
8 6384 39 25 2.80 I. 124 |
10] — 47127 9 39 2.79 138 122 |
12| 364404 227 | Tả 2.78 142 124)
| 14) 3473941 539 113 2.83 144 123 |
16 z 1301 21 ô 145 1.25 |
18 - 3056 | 363 | 21 Si € 146 1.26 |
(20 a T276 | 676 7 147 127|
22 - 18094 | 1219 = 148 128 |
24 - 39135 1641 - 148 1.26 |
Ta cũng có thể tự hỏi là ét hom fy không?”. Câu tả lời là
hơn A* dùng hị (ngoại trừ một vài nút có ƒ (n) =
khá đơn gián. Cần phải nhớ lại là tắt cả các nút có Tứ) < C° chắc chắn phải được triên khai. Điều này tương đương với việc nói tất ó
hín) < €° — gín) phải được triển khai. Nhưng
A* dùng hạ phải triển khai thì A* dùng h; cũng triển khai nó. Vì sử dụng các hàm heuristic có giá trị lớn với điều kiện không quá lớn
đảm bảo tính khả chấp và nhất quán. Các hàm heuristie như thế sẽ rút ngắn thời gian tính toán.
3.1.6 Sinh hàm heuristie khả chấp từ bài toán nới lỏng ràng buộc
„_ Như ta đã thấy cả hy và hạ đều là heurisic tốt cho bài toán 8-puzzzle và
hạ tốt hơn. Làm thế nào ta có thê có hạ? Có cách nào máy tính có thẻ tự phát
mình ra hàm như thể
hạ và hạ đều là hàm ước lượng chiều đài đường đi còn lại từ trạng thái
hiện tại đến trạng thái mục tiêu của bài toán 8-puzzle. Ngoài ra chúng còn
chiều dài đường đi chính xác cho các phiên bản đơn giản hoá của bài toán.
Nếu luật của bài toán được thay đối sao cho một ô có thé di chuyên đến bắt cứ nơi nào thay vi chỉ đi chuyên qua ô trồng cạnh nó, thi h; sẽ cho số bước chính Xác trong lời giải ngắn nhất. Tương tự như vậy, nếu một ô có thể dĩ chuyển một bước sang ô bên cạnh theo chiều ngang hoặc chiều dọc, ngay cả trong
trường hợp ô bên cạnh không phải 6 trống, thì h; sẽ cho số bước chính xác
trong lời giải ngắn nhất. Một bài toán có ít rằng buộc hơn bài toán gốc được gọi là bài toán được nới lỏng ràng buộc (relaxed problem). Đồ thị không gian ig thái của bài toán nới lỏng rằng buộc là một đồ /hƒ cha (supergraph) của thị không gian trạng thái gốc vì loại bỏ các rằng buộc sẽ tạo thêm các cung,
trên đồ thị gốc.
'Vì bài toán được nới lỏng rằng buộc thêm một số cung vào không gian
trạng thái, bất cứ lời giải tối ưu nào. trong bài toán gốc, theo định nghĩa, cũng
là một lời giải trong bài toán được nới long ràng buộc; nhưng bài toán nới lỏng ràng buộc có thê có lời giải tốt hơn nếu cung mới thêm vào tạo nên đường tắt.
vì thế, chỉ phí lời giải tôi ưu của bài toán được nới lòng rằng buộc sẽ là heuristic khả chấp cho bài toán gốc. Hơn nữa, vì heuristic được sinh ra này là chỉ phí chính xác của bài toán được nới lỏng ràng buộc, nó phải tuân theo bắt
đẳng thức tam giác và vì vậy sẽ nhất quán.
Nếu một định nghĩa của bài toán được viết bằng ngôn ngữ hình thức
(formal language), ta có thẻ xây dựng tự động bài toán được nới lỏng rằng buộc. Ví dụ, nếu các hành động của bài toán 8-puzzle được mô tả như sau:
Một ô có thể di chuyển từ vị trí A đến vị trí B nếu A kề với B theo chiều
ngàng hoặc chiều dọc và B là trồng.
Ta có thể sinh ra 3 bài toán được nới lỏng ràng buộc bằng cách loại bỏ.
1 trong 2 hoặc cả 2 rang bud
(a) Một ô có thể di chuyển từ vị trí A sang vị trí B nếu A kể với B.
(b) Một ô có thể di chuyển từ vị trí A sang vị trí B nếu B rỗng.
(e) Một ô có thể di chuyển từ vị trí A sang vi tri B.
Tir (a) ta suy ra hạ (khoảng cách Manhatan). Lý do là hạ sẽ là chỉ phí chính xác nếu mỗi lần ta di chuyển 1 ô đến vị trí đúng của nó. Heuristie sinh ra từ (b) sẽ được thảo luận sau trong phần bài tập. Tir (c), ta sinh ra A, vi nó là chỉ phí chính xác nếu ta đưa một ô sai vị trí đến vị trí đúng của nó trong một bude di chuyển. Chú ý rằng các bài toán được nới long ring bude sinh ra bằng.
kỹ thuật này có thể được giải mà không cần tìm kiếm, các luật được nới lỏng,
cho phép bài toán phân chia thành 8 bai toán con độc lập. Nếu bài toán được