GIẢI THUẬT TÌM HỆ SỐ CHIA TỐI ƯU

Một phần của tài liệu thiết kế trò chơi học thuật tháp hà nội trên nền tảng windows phone (Trang 31 - 33)

Hình 2.1.7.1.1: Lưu đồ giải thuật xác định hệ số chia tối ưu

Giải thuật này nhằm xác định hệ số chia tối ưu cho bài toán Tháp Hà Nội với bốn cọc. Giải thuật này sẽ nhận vào một giá trị n (là số lượng đĩa) rồi xét n có phải là

32 GVHD: ThS. Võ Huỳnh Trâm SVTH: Nguyễn Thanh Phi

số tam giác hay không. Để hiểu rõ hơn về giải thuật này, ta sẽ tìm hiểu về tam giác Pascal. p x 2 3 4 5 6 7 8 0 1 1 1 1 2 1 2 1 3 1 3 3 1 4 1 4 6 4 1 5 1 5 10 10 5 1 6 1 6 15 20 15 6 1 ..

Ta có thể thấy rằng với p = 3 (trường hợp 3 cọc) thì n = 1, 2, 3,… đều là số tam giác. Ngược lại với trường hợp 4 cọc tương ứng với p = 4 thì chỉ có các giá trị 1, 3, 6, 10, 15, .. là số tam giác.

Theo thuật toán Frame-Stewart thì hệ số chia tối ưu sẽ phụ thuộc và số đĩa. Nghĩa là phụ thuộc vào n có phải là số tam giác hay không. Như vậy, đối với giải thuật xác định hệ số chia tối ưu ta cần lưu một mảng giá trị arrayPascal là giá trị của các số tam giác trong trường hợp bốn cọc.

arrayPascal [] = {0, 0, 1, 3, 6, 10, 15, 21} Ý nghĩa của giải thuật:

Duyệt qua từng phần tử của mảng arrayPascal nếu n bằng một giá trị trong mảng thì n là số tam giác nên sẽ trả về số chia tối ưu là n − i + 1

Ngược lại, nếu arrayPascal > n đồng nghĩa với x(x−1)

2 < n <x(x+1)

2 thì trả về giá trị số chia tối ưu n − i + 2

33 GVHD: ThS. Võ Huỳnh Trâm SVTH: Nguyễn Thanh Phi

Một phần của tài liệu thiết kế trò chơi học thuật tháp hà nội trên nền tảng windows phone (Trang 31 - 33)