QUIHOẠCHĐỘNGTRÊNĐỒTHỊCÓHƯỚNG,KHÔNGCHUTRÌNH Giải toán có nội dung đồthị phần quan trọng chương trìnhtinhọc khuôn khổ chuyênđề này, xin trao đổi với bạn đồng nghiệp nội dung nhỏ lý thuyết đồthị "Các toán quihoạchđộngđồthịcóhướng,chu trình" Chuyênđềtrình bày số kinh nghiệm dạy đồthịcó hướng khôngchutrình Một điều lý thú hai nội dung chương trìnhtinhọcQuihoạchđộng lý thuyết đồthị kết hợp Chính điều cho phép xây dựng cho họcsinh cách nhìn tổng quan tiếp cận hai dạng toán Phần lớn ví dụ minh họa chuyênđề lấy từ kỳ thihọcsinhgiỏi khác Mục đích làm muốn trao đổi với bạn đồng nghiệp cách xây dựng đề toán đồthị cho vừa ôn tập kiến thức học sinh, vừa bám sát chương trìnhthi kỳ thihọcsinhgiỏitinhọc I-MỘT SỐ KHÁI NIÊM VÀ BÀI TOÁN CƠ BẢN Như biết, đồthị hình dung cặp (V, E) V tập hợp đỉnh (trong toán tinhọc V tập hợp hữu hạn đỉnh đánh số 1, 2, , N) E tập hợp cung đồthị Một đồthịcó hướng chutrìnhđồthịkhông tồn đường khép kín Cũng hình dung đồthị mà số lượng đỉnh tất thành phần liên thông mạnh Một đồthịcó hướng chutrình tồn xếp topo Chính xác hơn, xếp topo cách xếp đỉnh đồthị thành dãy x1 , x2 ,L , xn Sao cho cung ( xi , x j ) ∈ E kéo theo i < j Việc xếp topo đồthịcó hướng chutrình điều kiện tiên để làm toán quihoạchđộng loại đồthị Lý đơn giản coi đỉnh đồthị trạng thái với việc xếp topo có thứ tự trạng thái cách tiếp cận vấn đề theo quan điểm quihoạchđộngCó hai cách đề xây dựng xếp topo đồthịcó hướng chu trình: Cách thứ nhất: Dựa vào tiêu chí tự nhiên mà xếp tăng/giảm theo tiêu đương nhiên ta có xếp topo r , r , r Ví dụ (VOI 2008): Cho n hình tròn bán kính 2, n Ta nói từ đường tròn bán kính a nhảy tới hình tròn bán kính b tồn hình tròn bán kính c cho a+c=b (*) Hãy tìm đường qua nhiều hình tròn Dễ nhận thấy điều kiện (*) chứng tỏ từ hình tròn nhảy đến hình tròn có bán kính lớn nên hiển nhiên ta xếp lại hình tròn cho bán kính chúng tăng dần ta có xếp topo Thông thường tiêu chí tự nhiên thường dễ thấy việc xếp topo qui việc xếp tăng/giảm tiêu chí Do đó, hiển nhiên tiêu chí xếp phải dựa liệu có mối quan hệ xếp hoàn toàn (thông thường số) Cách thứ hai: Dựa vào thuật toán Tarjan tìm thành phần liên thông mạnh Chú ý đồthịchutrình thành phần liên thông mạnh có số lượng đỉnh Do trường hợp ta cần liệt kê đỉnh theo thứ tự sau phép duyệt đồthị ưu tiên chiều sâu Mã giả viết PROCEDURE visit(u) Đánh dấu u thăm For v ∈ Ke(u) if (v chưa thăm) then visit(v) Đưa u vào danh sách topo (Có thể tham khảo mã Pascal sách giáo khoa chuyêntin Tập 1) Cách thứ hai dùng tìm tiêu chí tự nhiên việc xếp topo Tuy cách tổng quát áp dụng cho trường hợp theo kinh nghiệm thông thường xếp topo ta hay sử dụng cách thứ Giả sử đồthịcó hướng chutrình G=(V,E) ta có xếp topo x1 , x2 , , xn Khi ta có hai toán sau: Bài toán 1: Cho cung đồthị trọng số Hãy tìm đường dài từ đỉnh s đến đỉnh t Đặt f [ xi ] lần độ dài đường dài từ s đến xi Khi f [ xi ] = max{f [ xk ] + d ( xk , xi ) : ( xk , xi ) ∈ E} Một điều lý thú thay tính toán cung ngược (các cung tới xi ) đồthị theo cách tư truyền thống quihoạch động, sửa (update) theo cung xuôi (đây đặc điểm thực quihoạchđộng DAG nói chung xây dựng cung ngược vấn đề phức tạp): PROCEDURE DuongDiMax For i ∈ {1, ,n} f[i]=-∞ For i ∈ {1, ,n} u=x[i] if (u=s) f[u]=0 if (f[u]-∞) For v ∈ Ke(u) if f[v]