MỘT SỐ VẤN ĐỀ ĐÁNG CHÚ Ý TRONG MÔN TIN HỌC
Phan Công Minh H S Vi t Anh , Ngô Văn Hồng , Bùi Minh Trí , Nguy n C nh Toàn Vinh 9-2009 M t s v n ð ðáng ý môn tin h c L I NÓI ð U V i mong mu n t ng h p nh ng thu t toán hay, cách gi i ð c ðáo trình h c t p ngơn ng l p trình Pascal Nhóm tác gi Phan Công Minh : H c sinh chuyên Tin A2K35 H S Vi t Anh , Ngơ Văn Hồng , Bùi Minh Trí Nguy n C nh Tồn – H c sinh chuyên Tin khóa 36 ðã vi t cu n tài li u “M t s v n ð ðáng ý môn tin h c” Trong ph m vi n i dung c a tài li u không ð c p ð n ki n th c, thu t toán b n mà t p trung vào kĩ thu t, thu t toán m r ng cách k p h p, ng d ng chúng ð gi i quy t toán tin, ð c bi t d ng thư ng g p kì thi Hi v ng cu n tài li u có th giúp ích cho b n ð c, nh t b n h c sinh ð i n vi c h c t p , b i dư ng Tin h c R t mong nh n ðư c s ðóng góp c a b n ð cu n tài li u hồn thi n Thay m t nhóm tác gi : Phan Công Minh Email: congminh91@yahoo.com M CL C L i nói ð!u Duy t nhánh c n Duy t ưu tiên Tìm ki m chu"i X# lý bit Quy ho ch ð ng tr ng thái Quy ho ch ð ng v$ trí c u hình Quy ho ch ð ng S%p x p topo ng d ng Phát hi n chu trình Chu trình Euler Chu trình âm ng d ng Tơ màu ð th$ Thu t tóan Ford Bellman k t h p Queue vịng Thu t tốn Dijtra v i ð&nh o M t s ng d ng thu t toán Dijtra Lu ng Mincost Các cơng th c hình h c M t d ng Quy ho ch ñ ng Trie Tree ng d ng Duy t b(ng cách chia đơi t p h p M t s tốn v khung Tìm ki m nh$ phân ng d ng X p l$ch công vi c X# lý s nguyên l n Hàm Mod Heap ng d ng Interval Tree Binary Index Tree Các l"i Pascal Kinh nghi m thi c# 12 15 21 26 35 44 49 53 56 71 81 84 92 99 104 107 117 123 127 133 137 167 173 181 190 M t s v n ð ðáng ý môn tin h c V N ð : DUY T NHÁNH C N Duy t nhánh c n phương pháp ph bi n s# d ng ð gi i quy t m t s lư ng l n toán tin, ð c bi t toán th c t C u trúc c a chương trình t nhánh c n ðư c mô t sơ lư c sau: Ch n m t nghi m c a toán làm c n (c) Th c hi n bư c t th i - N u i bư c sau bư c cu i ki m tra nghi m m i tìm ðư c c p nh t c n (c), ghi nh n m t nghi m t t c a toán - Sau bư c t th i, ki m tra nghi m s tìm ðư c có kh t t c n (c) hay không - g i ði u ki n nhánh c n N u có g i th c hi n bư c th i+1 cịn khơng quay l i bư c i-1 Hai y u t quan tr ng c a chương trình c n (c) kh i t o ban ð!u ði u ki n nhánh c n Vi c ch n m t c n (c) ði u ki n ki m tra nhánh c n t t s) giúp bư c t tránh ði vào nh ng hư ng mà ch%c ch%n khơng tìm ðư c k t qu t t ði u có nh nh hư ng tr c ti p ð n ð hi u qu c a chương trình Dư i ðây ta xét m t s cách ki m tra nhánh c n hay dùng thông qua toán c th Bài toán: Chu trình Hamilton nh nh t Cho ð th$ vơ hư ng G M"i c nh ðư c gán m t tr ng s nh t ð$nh (l n 0), tìm m t chu trình ði qua t t c ð&nh, m"i ð&nh m t l!n có t ng tr ng s nh* nh t G i ý: Duy t nhánh c n phương pháp nh t ð gi i quy t toán nêu Chu trình ði qua N ð&nh s) bao g m N c nh Gi s# t i bư c th i, ðã ði qua k c nh n-k c nh n a c!n ph i ði qua ði u ki n ð ði ti p bư c th i+1 s(k) + (n-k)*minc < smin Trong ðó: - s(k) t ng chi phí c a k c nh ðã ði qua - minc tr ng s c a c nh nh* nh t s c nh l i chưa ðư c ði qua c a ð th$ - smin t ng tr ng s c a m t chu trình ðã tìm ðư c chưa t i ưu Có th kh i t o smin ban ð!u m t s vơ l n Bài tốn: X p valy M t va ly có th ch a t i ða W ðơn v$ tr ng lư ng Có N lo i ð v t, s lư ng m"i lo i không h n ch Lo i ð v t th i có tr ng lư ng Ai có giá tr$ Ci H*i nên ch n nh ng lo i ð v t s lư ng ð x p vào va ly cho: - t ng tr ng lư ng c a v t không vư t gi i h n W c a valy - t ng giá tr$ c a v t l n nh t G i ý: V i m"i lo i ð v t i, g i Ti giá tr$ riêng c a nó: Ti = Ci / Ai Sau ðó s%p lo i ð v t theo th t gi m d!n c a Ti Phương pháp t nhánh c n t i m"i bư c t lo i ð v t i, ta l y k ð v t lo i này, ðó ði u ki n ð t ti p lo i ð v t i+1 (ði u ki n nhánh c n) là: M t s v n ð ðáng ý mơn tin h c Trong ðó: - k*Ai smax w tr ng lư ng mà valy có th ch a thêm sau bư c t lo i ð v t i-1 s(i) t ng giá tr$ hi n ðang có c a valy sau bư c t lo i ð v t i-1 smax t ng giá tr$ valy c a m t x p ðã tìm ðư c chưa t i ưu Có th kh i t o smax ban ð!u b(ng Bài tốn: Xâu ABC Tìm m t xâu ch& g m ký t A,B,C cho - Có ð dài N cho trư c (N= cu,v - s(u) + tu,v + d[v] = d[1] ðó s(u) t ng th i gian ðã ði t+ ð n u Bài tốn: Tìm ðư ng ði (ROADS) Có N thành ph N n i b i ðư ng m t chi u M"i ðư ng có hai giá tr$: ð dài chi phí ph i tr ð ði qua Bob thành ph B n giúp Bob tìm ðư ng ði ng%n nh t ð n thành ph N, bi t r(ng Bob ch& có s ti n có h n K mà thơi D li u: ROADS.INP Dịng ð!u tiên ghi t s test V i m"i test: dòng ð!u ghi K (0 ≤ K ≤ 10000) Dòng ghi N, ≤ N ≤ 100 Dòng ghi R, ≤ R ≤ 10000 s ðư ng n i M t s v n ð ðáng ý mơn tin h c M"i dịng N dòng sau ghi s nguyên S, D, L, T mô t m t ðư ng n i gi a S D v i ð dài L ( ≤ L ≤ 100) chi phí T (0 ≤ T ≤ 100) Lưu ý có th có nhi u ðư ng n i gi a hai thành ph K t qu : ROADS.OUT V i m"i test, in ð dài ðư ng ði ng%n nh t t+ ð n N mà t ng chi phí khơng q K N u khơng t n t i, in -1 Ví d : ROADS.INP 2 3 4 4 5 4 1452 1210 2311 3410 ROADS.OUT 11 -1 Bài toán: Romeo and Juliet Romeo Juliet b$ giam m t mê cung hình ch nh t kích thư c MxN vng Mê cung có hai lo i ô: t c m Trong trình ði mê cung, t i m"i bư c ta ch& có th di chuy n ð n t k c nh theo m t b n hư ng: ðông (E), Tây (W), Nam (S), B%c (N) Ban ð!u, Romeo t i ô [1,1] Juliet t i [M,N] ð kh*i mê cung, Romeo c!n di chuy n ð n ô [X,Y] Juliet c!n di chuy n t i ô [Z,T] ð c u c p tính nhân, Shakepeare ðưa cho b n m t c0m mang xâu D ch& g m kí t E, W, N, S th hi n m t lo t bư c di chuy n cho bi t có th ch n cho m"i ngư i m t s bư c di chuy n theo th t cho dãy, m"i bư c di chuy n ch& ðư c m t ngư i ch n m i bư c di chuy n dãy ð u ph i ðư c ch n m"i ngư i m i có th ði ð n ðích c a u c!u b n ch n cho m"i ngư i dãy bư c di chuy n thích h p N u có nhi u l i gi i ch& c!n ðưa m t l i gi i M t s v n ð ðáng ý môn tin h c 0 0 0 1 0 0 0 0 0 Ví d v i mê cung b ng bên kí hi u c m, ô t do, Romeo c!n ð n ô [2,2], Juliet c!n ð n ô [2,2], Juliet c!n ð n [4,4] xâu D SNEEWW vi c ch n bư c di chuy n c a hai ngư i có th vi t dư i d ng xâu ch& g m kí t R J: RJRRJR; có nghĩa Romeo th c hi n bư c di chuy n Nam (S), ðơng (E), ðơng (E), Tây (W), cịn Juliet th c hi n bư c di chuy n B%c (N), Tây (W) M t l i gi i khác cho b i xâu RJRRRJ D li u: ROJU.INP Dòng th nh t ghi hai s M, N (3