Chúng ta sử dụng thuật tốn qui hoạch động để mơ tả đồ thị G=(V,E) cho việc ghi nhận tốc độ. Mỗi cạnh (u,v) – E được gán cho với một âm thanh σ(u, v) từ một tập hữu hạn âm thanh. Biểu đồ ký hiệu là một mẫu người trang trọng nĩi một ngơn ngữ cĩ giới hạn. mỗi đường đi trong biểu đồ bắt đầu từ một chĩp đỉnh Vo thuộc V phù hợp để sản xuất một chuỗi âm thanh cĩ thể thực hiện được. ký hiệu của một đường đi trực tiếp được định nghĩa để nối vào nhau của các ký hiệu của các cạnh trên đường đi đĩ.
a) miêu tả một thuật tốn cĩ hiệu quả, cho một cạnh biểu đồ G với đỉnh Vo và một dãy s = _σ1, σ2, ..., σk_ của đặc điểm từ Σ, trở lại một đường trong G nơi bắt đầu tại Vo và cĩ S như ký hiệu của nĩ, nếu bất cứ hướng đi như thế tồn tại, mặt khác thuật tốn nên trở lại KHƠNG – Vật thuộc loại đã nĩi rõ – hướng đi. Phân tích thời gian chạy thuật tốn của bạn. (gợi ý: bạn cĩ thể tìm khái niệm từ chương hữu ích 22). Bây giờ cho rằng mỗi cạnh (u,v) – E cũng được cho một xác suất kết hợp khơng âm p(u,v) của cạnh đường ngang (u,v) từ đỉnh u và như
vậy sản xuất âm đồng vị. tĩm lại xác suất của các cạnh rời bất cứ đỉnh nào bằng 1. xác suất của một hướng đi được định nghĩa là tích số của xác suất của cạnh nĩ. Chúng ta cĩ thể quan sát xác suất của một hướng đi bắt đầu tại Vo sẽ đi theo hướng đi lý thuyết nơi khả năng chọn lựa cạnh thực hiện tại một đỉnh u là bị làm theo xác suất để xác suất cạnh sẵn sàng rời u.
b) để mở rộng câu trả lời của bạn trong phần a với kết quả nếu một hướng đi bị quay trở lại, nĩ là một hướng đi cĩ thể xảy ra nhất bắt đầu tại điểm Vo và cĩ ký hiệu là s- phân tích thời gian chạy thuật tốn của bạn
Hướng dẫn:
. Gọi d[u] là tốc độ nhanh nhất để truyền âm thành từ đỉnh s tới đỉnh u . gọi T là tập các đỉnh được duyệt qua từng bước lặp
. khởi tạo: For u:=1 to n do d[u]:=p[u,s]; T:={s}; V:=V\{s} While V<> 0 do
• tìm đỉnh t thuộc T, v thuộc V sao cho p[t,v] là min
• V:=V\{v} • T:=T + {v} • For v in V do o If d[v]> d[t]+ p[v,t] then d[v]> d[t]+ p[v,t] return D;
Bài 5: Di chuyển trên bàn cờ
Cho 1 bàn cờ cĩ kích thước là nxn và 1 quân cờ, bạn phải di chuyển quân cờ từ 1 cạnh phía theo qui luật sau, tại mỗi bước bạn cĩ thể di chuyển 1 trong 3 cách sau:
1. Di chuyển xuống 1 ơ kế tiếp.
2. Di chuyển sang trái 1 ơ ( nếu quân cờ khơng đứng ở cột ngồi cùng). 3. Di chuyển sang phải 1 ơ (nếu quân cờ khơng đứng ở cột trong cùng). Mỗi lần di chuyển đến ơ (x,y ) bạn nhận được p(x,y) đơ la.
Yêu cầu: bạn chỉ 1 ra một thuật tốn mà tập các bước di chuyển từ 1 nơi nào đĩ của cạnh phía trên của bàn cờ đến 1 nơi nào đĩ của cạnh phía dưới sao cho tổng số đơla là nhiều nhất cĩ thể
Hướng dẫn:
Khi đĩ ta cĩ:
1. F1j = p1j với j=1..n 2. Fij =
Fi-1j-1 + pij nếu chọn đường đi xuống Fi-1j + pij nếu chọn đi từ trái qua phải Fij-1 + pij nếu chọn đi từ phải qua trái 3. chọn max từ 3 trường hợp trên
Với kết quả như trên nghiệm của bài tốn là M = max(Fnj) với j=1..n
Bài 6. Lập chương trình để tăng lợi ích lớn nhất
Bạn được cung cấp 1 một bộ máy và n cơng việc a1, a2 ,…an để xử lý trên bộ máy đĩ. mỗi cơng việc aj cĩ một quá trình xử lý tj, một lợi nhuận dj và một thời hạn cuối cùng dj. Bộ máy chỉ cĩ thể xử lý một cơng việc tại một thời điểm và cơng việc dj phải chạy liên tục để các lần đơn vị tj liên tiếp nhau. Nếu cơng việc aj được hồn thành bởi thời hạn cuối cùng dj, bạn nhận một lợi nhuận pj, nhưng nếu nĩ hồn thành sau thời hạn cuối cùng, bạn nhận một lợi nhuận 0. Cho một thuật tốn để tìm cách thực hiện các cơng việc sao cho tổng lợi nhuận tối ưu nhất, cho rằng tất cả số lần xử lý được giới hạn trong khoảng 1 đến n. thời gian chạy thuật tốn của bạn là bao lâu nếu vấn đề được giải quyết, chúng ta muốn mycophagist để xuất hiện gần đúng kết quả.
Hướng dẫn:
Bước 1: ta sắp xếp thời gian kết thúc của cơng việc theo thứ tự tăng dần. Bước 2: Xây dựng hàm qui hoạch động:
- Gọi C[i] là tổng lợi nhuật lớn nhất thu được khi thực hiện cơng việc cho đến thời điểm kết thúc là i (xét trục i làm trục thời gian).
- C[0]=0
- Chúng ta cần tính là C[n]= ? . - C[i] được tính như sau:
* C[i] = C[i-1] nếu khơng cĩ cơng việc nào kết thúc tại thời điểm i
* C[i] = max(C[k-t[i]]) +p[i] với k=1..i và k-t[i]>=0