Phương pháp nhánh và cận cài đặt trên cây nhị phân.DOC tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập...
Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Giới thiệu chung I. Đặt vấn đề: Để tìm kiếm lời giải của một bài toán ta có nhiều phương pháp khác nhau. Nếu thể hiện bài toán dưới dạng đồ thị trong không gian trạng thái thì việc tìm lời giải cho bài toán là tìm đường đi trên bản đồ từ nút xuất phát đã cho đến một đích đích xác định. Có nhiều thuật giải tìm kiếm trên đồ thị đã được xây dựng, từ những thuật giải vét cạn đơn giản như tìm theo chiều sâu, tìm theo chiều rộng cho đến những thuật giải cải tiến ưu việt hơn, tập trung vào những đường đi nhiều triển vọng hơn cả. Trong bản luân văn này em xin được trình bầy một trong những phương pháp đó là “phương pháp nhánh và cận”. Phương pháp nhánh cận là phương pháp tìm kiếm tối ưu mà không tốn nhiều công sức và còn hoàn thiện hơn khi được cài đặt trên “cây nhị phân”. Việc triển khai tìm kiếm trên cây nhị phân là một cấu trúc dữ liệu quen thuộc được xây dựng hoàn chỉnh sẽ là một thử nghiệm lý thú nên xem xét. I.2 ý tưởng: Phương pháp tìm kiếm nhánh và cận là một phương pháp tìm kiếm tối ưu, bản thân cây nhị phân là một cấu trúc dữ liệu rất quen thuộc và tìm kiếm trên đó là một việc đơn giản nhánh chóng, tìm kiếm trên cây nhị phân là phương pháp tìm kiếm nhanh nhất chưa có phương pháp nào nhanh hơn chính vì tại so ta không kếy hợp 2 phương pháp này để có thể đưa ra 1 phương pháp tìm kiếm hay hơn, nhanh hơn ,tối ưu hơn đó chính là ý tưởng để em làm bản luân văn nay. Để có được những kết quả trong luân văn sinh viên đã nhận được sự hướng dẫn tận tình của thầyd giáo TS Nguyễn Đình Hoá - Em xin chân thành cám ơn sự hướng dẫn của thầy trong những bước đầu nhgiên cứu. Bản luận văn này đã được hoàn thành nhưng với trình độ kiến thức và kinh nhiệm còn hạn chế nên không thể tránh khỏi những thiếu sót nên em rất mong được sự chỉ bảo của các thầy cô và đóng góp ý kiến để em có thể hoàn thiện về mặt kiến thúc và tiếp tục nghiên cứu phát triển bản luận văn này được hoàn thiện hơn. Bản luân văn bày dài 87 trang, Ngoài phụ lục thì bao gồm ba chương. Sau đây là tóm tắt nội dung chính của luân văn. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 1 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Chương I Phương pháp tìm kiếm nhánh và cận I. Biểu diễn bài toán trong không gian trạng thái I.1 Không gian trạng thái: Để biểu diễn đầy đủ một bài toán trong phép biểu diễn không gian trạng thái cần phải xác định 4 yếu tố: - Trạng thái ban đầu. - Các toán tử chuyển trạng thái: Từ một trạng thái đã cho đến một trạng thái kế tiếp. - Trạng thái đích. - Chi phí kèm theo mỗi toán tử chuyển trạng thái (có thể có). Toán tử : phép biến đổi trạng thái được biểu diễn hoặc coi như hàm, ánh xạ từ không gian trạng thái vào chính nó. Hoặc các quy tắc sản xuất(Production rules) dưới dạng S i → S j Ví dụ: Đánh cờ có rất nhiều toán tử chuyển trạng thái vì nhiều quân, nhiều cách đi. Mô tả các trạng thái: Các xâu ký hiệu, véctơ, mảng một chiều, hai chiêu, cây, danh sách Ví dụ: Bài toán 8 ô chữ số: Mỗi trạng thái là một ma trận (A ij ) 3*3 . Bài toán người bán hàng: Trạng thái là xâu ký hiệu, dẫy liên tiếp các phố đã qua. Một cách hình thức có thể biểu diễn bài toán như sau: Prob(S, O, So, Sđ) S : (States) Không gian trạng thái bằng tất cả các trạng thái có thể có của bài toán. O : Các toán tử chuyển trạng thái. So : Trạng thái đầu. Sđ : Trạng thái đích. Biểu diễn bằng đồ thị: Cho đồ thị G=(N,A) : N: Nút (node). A : Là cung (a,b) có hướng. Ta có thể hiểu: Nút : là các trạng thái. Cung : Toán tử chuyển trạng thái. (Cha chuyển sang con). Nếu trạng thái đầu là gốc của cây thì lời giải là một đường đi từ gốc n đến nút đích. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 2 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân - Bài toán 8 số, 9 ô. Toán tử truyển trạng thái là di chuyển ô trống. Giải bài toán : là tìm đường đi từ trạng thái đầu đến đích. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 3 2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 3 1 8 4 7 6 5 2 8 3 1 4 7 6 5 8 3 2 1 4 7 6 5 2 8 3 7 1 4 6 5 2 3 1 8 4 7 6 5 2 3 1 8 4 7 6 5 1 2 3 8 4 7 6 5 1 2 3 7 8 4 6 5 1 2 3 8 4 7 6 5 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Chương 2 I. PHƯỜNG PHÁP TÌM KIẾM LỜI GIẢI: II.1.MÔ HÌNH TRÊN ĐỒ THỊ: Nếu biểu diễn bài toàn thành đồ thị trong không gian thạng thái lời giải của bài toán là tìm đương đi trên một đồ thị, từ một điểm xuất phát ứng với trạng thái đầu đến một điểm đích, ứng với trạng thái kết thúc của bài toán. Mỗi nút → 1 trạng thái của bài toán. Tuy nhiên tại mỗi nút còn cần có nhiều thông tin khác nữa thể hiện quan hệ cha, con độ sâu, chi phí (path cost), trong khi trạng thái không thể hiện rõ những điều đó. Các cung là một phép toán, một quan hệ để chuyển từ trạng thái này sang trạng thái khác . • Thuật giải tổng quát: Xuất phát từ nút trạng thái ban đầu: Lặp: - Nếu không có nút để triển khai tiếp → thất bại (vô nghiệm). - Trái lại: Chọn nút để triển khai tiếp theo một quy tắc bằng một chiến lược nào đó để tìm ra đích (nếu có): - Kiểm tra trạng thái đích chưa: - Đúng → lời giải. - Sai : Khai triển nút và thêm các nút mới vào cây tìm kiếm. Hết lặp. • Các chiến lược tìm kiếm Được quyết định bởi: - Quy tắc xác định thứ tự các nút sẽ tạo mới. - Quy tắc xắp xếp các nút con của nút đang xét vào danh sách chờ. • Đánh giá một chiến lược tìm kiếm Các chỉ tiêu để xét một chiến lược tìm kiếm: • Thành công: Có cho phép tìm ra đích không (nếu có đích). • Độ phức tạp thời gian: Số nút cần phải tao mới, sinh ra. • Độ phức tạp không gian: Số nút cần phải ghi nhớ trong bộ nhớ để thực hiện vào việc tìm kiếm. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 4 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Tối ưu: Có cho phép tìm ra được đường đi ngắn nhất từ gốc đến đích hay không ⇔ lời giải tối ưu. Tổng quan hơn, nếu mỗi cung có một trong số là chi phí thì có tìm ra đường đi (lời giải) với chi phí là min. II.2. CÁC PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI: Tìm kiếm theo chiều sâu trong không gian bài toán được bắt đầu từ một nút rồi tiếp tục cho đến khi hoặc đến ngõ cụt, hoặc đến đích. Nếu không đi tiếp được, gọi là đến gõ cụt, hệ thông quay lại một mức trên cây và tìm theo hương khác. Hành động này gọi là quay lui . Quá trình duyệt cây đi theo các nhánh cho đến nút lá nào đó, sau đó quay lui về một đỉnh nào đó để sang nhánh khác Đường đi không nhất thiết là ngắn nhất. - Không quay về trạng thái trước đó để tránh vòng xoay vô hạn Ưu điểm: - Lời giải được đảm bảo : Khai thác tận cùng không gian bài toán để tìm lời giải. Sẽ tìm ra được lời giải nếu có. - Nhanh đến lời giải : Lời giải ở rất sâu →tiết kiệm thời gian. - Luôn tập trung vào đích. • Nhược điểm: - Cứng nhắc. Nếu chọn nút ban đầu không thích hợp sẽ không dẫn đến đích của bài toán. - Không phù hợp với không gian bài toán lớn: Với bài toán có không gian lời giải lớn. Có thể không đến lời giải trong thời gian vừa phải. Cho dù khi ta giới hạn độ sâu là D, thuật toán luôn dừng, nhưng với các đỉch ĐICH có độ sâu lớn hơn D thì nó đưa ra thông báo “không thành công” mà điều đó ta không mong muốn. - Không hiệu quả với các bài toán tầm thường: Đi theo một nhánh để nhận được lời giải không mấy giá trị thì đó là không hiệu quả Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 5 B1 Hình minh hoạ tìm kiếm theo chiều sâu Bắt đầu C1 ĐICH A B2 C2 C3 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân II.2.2.TÌM KIẾM THEO CHIỀU RỘNG: Là tìm kiếm lời giải trên tất cả các nút của một mức trong không gian bài toán trước khi chuyển sang các nút ở mức tiếp theo. Được bắt đầu từ mức thứ nhất trong bài toán nếu không tìm thấy lời giải ở mức này nó chuyển xuống mức tiếp theo . Đến khi định vị được lời giải, nếu có. • Ưu điểm: - Giải được: vét cạn không gian bài toán→ tìm thấy lời giải nếu có. - Không bỏ qua các lời giải tầm thường, dễ thấy. • Nhược điểm: - Thực hiện theo một thuật toán đã định trước. Máy móc không có thông tin hỗ trợ → sẽ không nhận ra ngay lời giải → dễ bỏ qua mất lời giải. - Không phù hợp với không gian bài toán kích thước lớn: không đủ thời gian để vét cạn các lời giải. Nó phải đối diện với nhu cầu: - Cần nhiều bộ nhớ, theo số nút cần lưu trữ. - Cần nhiều công xử lý các nút, nhất khi các nhánh cây dài, số nút tăng. - Dễ thực hiện các thao tác không thích hợp, thừa. - Không hiệu quả với lời giải ở sâu: - Giao diện với người dùng không thân thiện . II.2.3). PHƯƠNG PHÁP BEST-FIRST SEARCH: Các phương pháp tìm kiếm trên là những phương pháp tìm kiếm không có thông tin bổ xung hay là tìm kiếm một cách mù quáng và chỉ dùng thông tin có từ ban đầu. Đối lập với các phương pháp trên là những phương pháp tìm kiếm có xét đoán. Ta xét hai phương pháp sau. Best-First search Tư tưởng thuật toán : Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 6 …… B1 Bắt đầu C1 ……. ĐICH A B2 …… ……. C2 C3 …… Hình minh hoạ tìm kiếm theo chiều rộng Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Các phương pháp đã xét trên thực chất là tìm kiếm vét cạn không gian bài toán và dừng khi đã tìm thấy đích. Mục đích của chúng ta là: - Tìm ra lời giải = đến đích. - Nhanh nhất = đường ngắn nhất. Theo ngôn ngữ đồ thị bài toán trong không gian trang thái có nghĩa là: Tìm đường đi ngắn nhất(rẻ nhất) từ nút đầu đến nút đích. Ta có thể hiểu: Best-First search = Xét đoán để đi theo nhánh nào nhiều triển vọng đến đích hơn cả. - Xây dựng hàm đánh giá, gắn cho mỗi nút một trọng số . - Chọn nút nào có triển vọng lớn nhất (hoặc chi phí bé nhất) để khai triển tiếp. - Chọn nút có triển vọng nhất (hay chi phí nhỏ nhất). - Xếp hàng nút con có trọng số lớn nhất vào đầu danh sách đợi. Nghĩa là: chiến lược xếp hàng có ưu tiên “triển vọng” chứ không phải theo vị trí của nút trong cây đồ thị của bài toán. • Thuật toán: Hàm đánh giá thô sơ nhất Xét nút “có vẻ” triển vọng nhất. Hàm đánh giá = hàm chi phí II.3). PHƯƠNG PHÁP TÌM KIẾM NHÁNH VÀ CẬN Một cách cho phép tìm kiếm các đường tối ưu mà không tốn nhiều công sức là dùng phương pháp tìm kiếm nhánh và biên. Tìm kiếm nhánh và biên cho phép mởi rộng đường biên có giá trị thấp. Nội dung đơn giản. Thủ tục tìm kiếm nhánh và biên: 1. Tạo hàng đợi có một phần tử là nút gốc, có độ dài bằng 0. 2. Cho đến khi đương đầu tiên trong hàng đợi kết thúc tại nút đích hay hàng đợi rỗng, thực hiện: • Rút đường đầu tiên ra khỏi hàng đợi; tạo các đường mới bằng cách nới đường đầu tiên về phía lân cận của nút đích. • Bỏ đi các đường xoay vòng. • Bổ sung các đường mới còn lại, nếu có, vào hàng đợi. • Sắp xếp lại bộ hàng đợi theo độ dài đường đi, các đường giá rẻ lên trước 3. Nếu thấy nút đích thông báo hoàn thành, nếu không thì thông báo thất bại. Tuy các số tìm kiếm không ít nhưng thủ tục này tránh được việc vét cạn không gian lời giải. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 7 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Ta có thể bổ sung các đánh giá để tăng hiệu quả tìm kiếm: Ta có thể thêm ước đoán về đoạn đương còn lại, chưa đi cũng như khoảng cách đã đi được. Nhìn tổng thể: Đánh gía cả con đường(e) = độ dài đoan đã đi(d) + đánh giá đoàn con lại(e’) Việc đánh giá của phần còn lại không dễ dàng, đánh giá càng chính xác thì càng nhận định đúng về đương tối ưu, nhưng thường thì không hoàn hảo, và việc đánh giá cao hơn bước thực sẽ làm ta bỏ qua đưòng đi tốt hơn. Nên ta dùng đánh giá thấp hơn giá thực tế để không bị bỏ mất đường đi Đánh giá thấp con đường(u) = độ dài đoạn đã đi(d) + đánh giá thấp đoạn còn lại(u’) Nếu người ta phát hiện con đường do phát triển các nút theo đánh giá thấp, không phảỉ xét các đường có đánh giá cao hơn đường này, nếu tất các đoạn còn lại có thể đánh giá thấp thì không thể sai lầm được. Ví dụ: Đường đi từ S đến A được đánh giá là 13.4…. Với đường SA có đánh giá cao hơn đường SD(13.4 > 12.9) vậy D được chọn để phát triển …, chọn E để phát triển …, chọn F để phát triển. Vậy qua giải pháp vừa rồi ta tiết kiệm được nhiều công sức ta viết lại thủ tục Nhánh và Biên với nội dung cải tiến là dòng in đậm Thủ tục tìm kiếm nhánh và biên(cải biến): 1. Tạo hàng đợi có một phần tử là nút gốc, có độ dài bằng 0. 2. Cho đến khi đường đầu tiên trong hàng đợi kết thúc tại nút đích hay hàng đợi rỗng, thực hiện: • Rút đường đầu tiên ra khỏi hàng đợi; tạo các đường mới bằng cách nới đường đầu tiên về phía lân cận của nút đích. • Bỏ đi các đường xoay vòng. • Bổ sung các đường mới còn lại, nếu có, vào hàng đợi. • Sắp xếp lại toàn bộ hành đợi theo tổng độ dài đường đi và đánh giá biên thấp đối với đánh giá đoạn đường còn lại, các đoạn đường giá rẻ lên trước 3. Nếu thấy nút đích thông báo hoàn thành, nếu không thì thông báo thất bại. Việc đánh giá chính xác được khoảng cách đoạn đương còn lại là thuận lợi cho thủ tục. Tuy nhiên, vì không phải bao giờ cũng thực hiện được Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 8 S A 13.4 B C D E F G 17.7 13.012.9 12.9 19.4 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân điều mong muốn nên người ta mới phải dùng đánh giá thấp hơn để thay thế, việc đưa ra đánh giá biên thấp còn tốt hơn là không đưa ra đánh giá nào mà cho tất cả các ước lượng các đoạn đường chưa đi là 0. nguyên tắc quy hoạch động : Giả sử đường đi từ nút bắt đầu là S qua nút trung gian I không ảnh hưởng gì đến việc chọn các đường từ I đến đích G và ta thấy: Khoảng cách tối thiểu (S → I → G) = khoảnh cách tối thiểu (S → I) + khoảnh cách tối thiểu ( I → G) Nguyên tắc quy hoach động nói rằng: “ Khi tìm đường tốt nhất từ S đến G có thể bỏ qua các đường từ S đên nút trung gian I, mà chỉ giữ lại một đường có độ dài nhỏ nhất” Nguyên tắc quy hoach động: “Cách tốt nhất qua một nơi trung gian là đường tốt nhất tới nó kể từ nơi xuất phát, nối với đường tốt nhất từ nó tới đích, không cần thiết tìm các đường khác đến nơi trung gian ấy. Thủ tục tìm kiếm nhánh và cận: 1. Tạo hàng đợi có một phần tử là nút gốc, có độ dài bằng 0. 2. Cho đến khi đường đầu tiên trong hàng đợi kết thúc tại nút đích hay hàng đợi rỗng, thực hiện: • Rút đường đầu tiên ra khỏi hàng đợi; tạo các đường mới bằng cách nới đường đầu tiên về phía lân cận của nút đích. • Bỏ đi các đường xoay vòng. • Bổ sung các đường mới còn lại, nếu có, vào hàng đợi. • Nếu hai hay nhiều đương gặp nút chung, xoa tất cả các đường này và chỉ để lại đường gặp nút chung với đánh giá tối thiểu. Sắp xếp lại bộ hàng đợi theo độ dài đường đi, các đường giá rẻ lên trước. 3. Nếu thấy nút đích thông báo hoàn thành, nếu không thì thông báo thất bại. Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 9 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân CHƯƠNG II CÂY NHỊ PHÂN-THIẾT KẾ VÀ CÀI ĐẶT I.PHÂN TÍCH THIẾT KẾ CÂY NHỊ PHÂN I.1.PHÂN TÍCH CẤU TRÚC DỮ LIỆU Mô đun cây nhị phân trong phần này sẽ cài đặt và định nghĩa theo ngôn ngữ lập trình Turbo C. Yêu cầu đặt ra là phải thiết kế tính đầy đủ không thừa, tức là mỗi thành phần của một nút đều phải có ý nghĩa quyết định nào đó. Để làm được điều này ta phải có sự phân tích đúng và chính xác. Định nghĩa cây: Cây là 1 đồ thị không có chu trình, trong đó chọn ra 1 đỉnh gọi là gốc hay cây là 1 tập hợp các đỉnh trong đó có 1 đỉnh đặc biệt gọi là gốc, các đỉnh còn lại có quan hệ "cha con". Mỗi nút không có quá 2 con. Cây nhị phân còn được định nghĩa theo kiểu đệ quy như sau: Cây nhị Phân = Cây rỗng Object = Dưliệu. Cây nhị phân : Cây con trái Cây nhị phân : Cây con phải Cây rỗng là cây không chứa nút nào và biểu thị bằng một đối tượng đặc biệt NULL của ngôn ngữ. → Cấu trúc của mỗi nút gồm ba trường, một trường dữ liệu và hai trường là con trỏ trái và con trỏ phải. trường dữ liệu là một trường kiểu con trỏ void. Như vậy cấu trúc tối thiểu mỗi nút sẽ được mô tả như sau: Struct Node { Node *Left Node *Right Void *Object } Trân Triệu Hùng Hà Nội 6/2000 K96B- CNTT 10 Cây con Bên trái Cây con Bên phải Gốc [...]... Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân CHƯƠNG III THỰC HIỆN THUẬT GIẢI TÌM KIẾM NHÁNH VÀ CÂN TRÊN CÂY NHỊ PHÂN I CHUYỂN CÂY TỔNG QUÁT THÀNH CÂY NHỊ PHÂN • Cây tổng quát : Có rất nhiều cách để biểu diễn cây tổng quát, với cây tổng quát thì việc lưu chữ rất lớn, tốn nhiều bộ nhớ, biểu diễn khó khăn Như với cây cấp m thì 1 nút phải có m mối nối để trỏ tới m cây con Số mối nối... 5 1 7 2 8 6 3 4 5 VÀ CẬN TRÊN CÂY: III.1 Sự lưa chọn cây nhị phân: - Cây tổng quát nhiều nút thừa, phức tạp, khó thể hiện, khó cài đặt, không tối ưu 16 Trân Triệu Hùng K96B- CNTT Hà Nội 6/2000 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân - Cây nhị phân đã được xây dựng hoàn chỉnh, cài đặt thuật giải trên đó, chính xác, tối ưu III.2.Thủ tục phân nhánh: + void branching (pnut C)... văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Để cho tiện thực hiện các thao tác di chuyển trên cây, người ta còn thêm 1 con trỏ trỏ đến nút cha Tóm lại mỗi nút cây nhị phân có chứa một con trỏ đến dữ liệu và 3 con trỏ tương ứng tới nút con trái, con phải và nút cha Typedef : Struct Mot_Node { void *Object Struct Mot_Node *Trai, *Phai, *Cha; } Đối với cây nhị phân ta cần xây dựng : Tạo lập cây, ... cây, đọc nội dung của một nút, di chuyển trên cây, thêm nút mới, gỡ bỏ một nút và duyệt cây - Phép xử lý tại một nút có phái sinh các nút nhánh, các nút con nên cần phải có thủ tục ghi lại vị trí hiện hành trên cậy nhị phân và thủ tục khôi phục lại vị trí đã ghi của nút hiện thời Điều này là cần thiết vì để thực hiện phép duyệt cây hoặc phân nhánh trên cây II GIAO DIÊN VÀ CÁC THUẬT GIẢI CÀI ĐẶT TRÊN... văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Void Void Void Void Void Void Void (*them vao)(cay2, huong, Void); (ghi_lai_view)(cay2); (ghi_lai_view_huong)(cay2, huong); (*view_cu)(cay2); (*hien thi)(cay2, void(*), (void*)); (*di chuyen canh)(cay2, huong); (*ghep)(cay2, cay2, huong);} II.2).CÀI ĐẶT CÁC THUẬT GIẢI TRÊN CÂY NHI PHÂN: II.2.1).Thao tác tạo lập 1 cây thực hiện việc khởi tạo 1 cây. .. chuyển theo hướng đó - Cập nhập lại trạng thái của cây III.4 Thủ tục duyệt và phân nhánh: + Void phannhanh() + Thực hiện chức năng duyệt và phân nhánh trên toàn bộ cây • Thuật Toán: - Khai báo và lưu kết quả khi tới thăm cây - Nếu bước hiện thời có giá trị bằng bước trên cây +1 - Ghi lại hướng của nút hiện thời trên cây (T) - Gọi thủ tục phân nhánh trên bước t - Gọi thủ tục quay lại các vị trí của nút... phân nhánh và loại bớt các nhánh thừa Sau mỗi bước phân nhánh phải cập nhập giá trị tốt nhất của hàm lượng giá tìm hướng đi thích hợp với hàm lượng giá min, sau Step = t thì chính là lời giải, nên đặt Step bằng một số nào đó đủ lớn để dừng khi quá lâu Bước xuất phát: Bắt đầu từ gốc - Tính hàm lượng giá 18 Trân Triệu Hùng K96B- CNTT Hà Nội 6/2000 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây. .. II.2.12) Thủ tục ghép cây: + Static void ghep(cay2 r, cay S, huong d); + Thực hiện phép ghép hai cây lại với nhau Trong trường hợp này cây đích là cây R, cây nguồn là S Cây nguồn sẽ được ghép vào một hướng nào đó của nút hiện thời của cây ra; II.2.13 Thủ tục chiết cây +Static void chet (cay2 r, huong d) + Thực hiện phép chiết cây từ một cây đẵ tồn tại, nút được xét là nút hiện thời và sẽ chiết theo một... Trân Triệu Hùng K96B- CNTT Hà Nội 6/2000 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân Như ta thấy: - Vị trí (x1) ở trang thái đầu là số 2 còn vi trí (x1) ở trạng thái đích là 1 đấy là sai vị trí tại x1 và lúc này h(n) = 1 - Vị trí (x2) ở trang thái đầu là số 8 còn vi trí (x2) ở ttạng thái đích là 2 đấy là sai vị trí tại x1 và lúc này h(n) = 1+1=2 - Vị trí (x3) ở trang thái đầu là... J C D F G H 14 Trân Triệu Hùng K96B- CNTT I J Hà Nội 6/2000 Tóm tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân II XÂY DỰNG CHƯƠNG TRÌNH MINH HOẠ Với bài toán 8 số và ô trống Trạng thái của bài toán : Là một mảng 8 số được thể hiện bằng màng một chiều – với số 0 là ứng với ô trống đây là vị trí tại mỗi nút Và trong không gian trạng thái ta có thể biểu diễn mỗi nút : x1 x2 x3 x4 x5 x6 . luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân CHƯƠNG II CÂY NHỊ PHÂN-THIẾT KẾ VÀ CÀI ĐẶT I.PHÂN TÍCH THIẾT KẾ CÂY NHỊ PHÂN I.1.PHÂN TÍCH CẤU TRÚC DỮ LIỆU Mô đun cây nhị phân trong. tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân CHƯƠNG III THỰC HIỆN THUẬT GIẢI TÌM KIẾM NHÁNH VÀ CÂN TRÊN CÂY NHỊ PHÂN I. CHUYỂN CÂY TỔNG QUÁT THÀNH CÂY NHỊ PHÂN • Cây tổng quát. tắt luận văn Phương pháp nhánh và cận cài đặt trên cây nhị phân - Cây nhị phân đã được xây dựng hoàn chỉnh, cài đặt thuật giải trên đó, chính xác, tối ưu. III.2.Thủ tục phân nhánh: + void