Bài toán mệnh đề và biến đổi

7 1.1K 2
Bài toán mệnh đề và biến đổi

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài toán mệnh đề và biến đổi

Mệnh đề một số bài toán biến đổiLê Trần Hoài NamCácbạn thân mến! Qua các cuộc thi, hẳnta đã tiếp xúc khá nhiều bài toán mang tính chất biến đổi trạng thái,để đưa trạng thái nguồn về trạng thái đích. Lối giải quyết thườngmù tịt. Để giải chúng, ta cần trải qua một số nhận xét, mà tôi tạmgọi là bổ đề. Việc tìm ra mệnh đề bổ trợ sẽ soi sáng đường chochúng ta đi đến kết quả, có thể là chặt bớt nhánh trong một rừng tìmkiếm, có khi là tìm điều kiện tồn tại nghiệm, đôi khi chúng còngiúp bạn đến cỡ 90% bài toán. Chúng tra hãy cùng lướt qua một số vídụ. Bàitoán 1 : Lưới đèn (Đề toàn quốc 1995) Đề: 1lưới đèn N*N bóng ,mỗi bóng có 2 trạng thái: sáng (1) tắt (0). Vídụ 1 trạng thái của lưới với N=3. 1 0 1 1 1 0 0 0 1 Mỗihàng cột đều có 1 công tắc. Khi ấn sẽ thay đổi trạng thái của tấtcả các bóng (0 →1, 1 → 0)trên hàng (cột) đó. Nhiệmvụ là phải biến đổi 1 trạng thái nguồn thành trạng thái đích qua 1số ít nhất S lần biến đổi. Dữliệu cho trong file ′battat.inp′ cho số N trạng thái đầu A, trạngthái đích B, kết quả in ra ở file ′battat.out′ gồm số S các bướcbiến đổi. Nếu không thể biến A thành B, S = -1. Vídụ: Battat.inp 3 10 1 11 0 00 1 00 0 10 0 01 1 Battat.out 2 h1c2 Giải: Trướchết ta có đưa ra vài bổ đề: 1/ số cách ấn mỗi cách tối đa là 1. 2/ thứ tự các cách ấn là không quan trọng. 3/ nếu A[i,j]=B[i,j] thì nếu cách nhấn hàng i song hành với cáchnhấn cột j (i=1 m,j=1 n) vàngược lại. Dođó ta sẽ phân hoạch được tập A={hàng 1, hàng 2, , hàng N, cột 1, cột2, ,cột N} thành 2 tập con (trong trường hợp có đáp án cho bài toán, tứcS ≠-1). Tadễ dàng chứng minh điều này: Tacó tất cả các cột dều phụ thuộc vào hàng 1, tất cả các hàng dềuphụ thuộc vào cột 1 → đpcm. Tasẽ lập 1 mảng 2 chiều C [1 2,1 N] với c[1,i]=1 nếu hàng i thuộc tập hợp 1 =2 nếu tuơng tự c[2,i]=1 nếu cột i thuộc tập hợp 1 =2 nếu tuơng tự. t[i]là số phần tử thuộc tập hợp i (i=1 2). Ta xây dựng C bằng cách lần lượt so sánh tất cảcác phần tử của A B theo thứ tự từ trên xuống, từ trái qua. Bước 1:Bước 2 : S:=max(t[1],t[2]); { lấy tập hợp nhiều phần tử nhất, in ra tất cả ′h - ′i ( ′c - ′i) nếu những hàng (cột) thuộc tập nhiều phần tử nhất (tập 1 hay tập 2) } Baitoán 2 : Party Lamps (IOI 1998 tai Bồ Đào Nha) Đề: Để thắp sáng buổi dạ hội tại Cuộc thiOlympic Tin học quốc tế năm 1998, chúng ta có một bộ gồm N ngọn đènmàu đánh số từ 1 đến N. Các ngọn đèn được nối với nhau bằng bốnnút: nút 1 khibấm nút này, tất cả các ngọn đèn đều đổi trạng thái: các ngọnđèn đang ở chế độ ON sẽ chuyển thành OFF tất cả các ngọn đènở chế độ OFF sẽ chuyển thành ON. nút 2 thayđổi trạng thái của tất cả các ngọc đèn mang số lẻ. nút 3 thayđổi trạng thái của tất cả các ngọn đèn mang số chẵn. nut 4 thayđổi trạng thái của tất cả các ngọn đèn được đánh số dạng 3K+1(với K≥0), ví dụ: 1,4,7,… Cómột chiếc máy đếm C ghi lại tổng số lần bấm nút.Khi buổi dạ tiệc bắt đầu, tất cả các đèn đều ở trạng thái ON vàmáy đếm C được đặt ở 0. Bàitoán Cho trước giá trị đếm máy C ghi đượcvà thông tin trạng thái cuối cùng của một số ngọn đèn. Hãy viết chươngtrình xác định trạng thái cuối cùng có thể (không lặp lại) của Nngọn đèn theo thông tin cho trước. Input File PARTY.IN chứa bốn dòng: số ngọn đèn N, số lần bấm đèn C trạng thái cuốicùng của một số ngọn đèn. Dòng đầu tiên chứa số N dòng thứ hai chứa giá trị cuối cùng máyđếm C ghi nhận. Dòng thứ ba chứa số ngọn đèn ở trạng thái cuối cùnglà ON, các thông tin được ngăn cách bằng ký tự trống, cuối dòng cósố nguyên -1. Dòng thứ tư chứa số ngọn đèn ở trạng thái cuối cùnglà OFF, các thông tin cũng được ngăn cách bằng ký tự trống kếtthúc bằng số nguyên -1. party.inp 10 1-1 7 -1Trong ví dụ này có tất cả 10 ngọn đènvà chỉ một nút đã được bấm. Ngọn đèn số 7 ở trạng thái cuối cùnglà OFF. Output File PARTY.OUT phải chứa tất cả các trạng thái cuối cùng (không lặp lại) có thể củatất cả các ngọn đèn. Mỗi trạng thái phải được thể hiện trên mộtdòng riêng. Các trạng thái có thể được sắp xếp tuỳ ý. Mỗi dòng có N ký tự trong đó ký tự đầutiên chỉ trạng thái của ngọn đèn số 1 chữ số cuối cùng chỉ trạngthái của ngọn đèn N. Số 0 chỉ ngọn đèn ở trạng thái OFF số 1chỉ ngọn đèn ở trạng thái ON. Party.out 0000000000 0110110110 0101010101 Trong trường hợp này, các ngọn đèn cóthể ở ba trạng thái: tất cả các ngọn đèn đều ở trạng thái OFF; hoặc các ngọn đèn 1, 4, 7, 10 ở trạng thái OFF các ngọn đèn 2, 3, 5, 6, 8, 9 ở trạng thái ON; hoặc các ngọn đèn 1, 3, 5, 7, 9 ở trạng thái OFF các ngọn đèn 2, 4, 6, 8, 10 ở trạng thái ON. Ràngbuộc Các tham số N C thỏa mãn điều kiện:10 ≤ N ≤ 100, 1 ≤C ≤10000Số ngọn đèn có trạng thái cuối cùng là ON nhỏ hơn hoặc bằng 2.Số ngọn đèn có trạng thái cuối cùng là OFF nhỏ hơn hoặc bằng 2.Có ít nhất một trạng thái cuối cùng cho các ngọn đèn trong file chạythử. Giải: ở bài này, ta cũng có nhận xét 1/ của bài 1. Nhận xétthứ 2 sau đây là quan trọng nhất: 2/ Với c>4, tồn tại 2 lần bấm giốngnhau trong c lần bấm. Bạn đọc dễ dàng chứng minh điều này. Như vậy, nếu c>4 thì nhấn c lần tươngđương với nhấn c-2 lần; Cứ như vậy, ta sẽ đơn giản c>4 → c=3 hoặc c= 4. Ta có thể tính c đơn giản như sau: ifc>4 then c:= 4-c mod 2; Tiếptục đơn giản c,với c nhận được(c≤4),ta sinh tất cả các tổ hợpchập Ai c, c-2, c-4 (chỉ lấy phần tử c-2,c-4 nếu chúng ≤0) phần tử từtập các cách nhấn A={1,2,3,4}. Vídụ với c=2, ta sẽ có các tập hợp Ai (i=1 T) với T là số tổ hợp tìmđược lần lượt là: {},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}; Nhưvậy, Tmax=Max{T(4),T(3),T(2),T(1)}= C 4 0 + C42 + C44 =1+6+1=8; một con số khá nhỏ?. Talập sẵn tất cả các tổ hợp các cách nhấn: A*={{},{1},{2},{3},{4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4},{1,2,3},{1,2,4},{1,3,4}, {2,3,4},{1,2,3,4}} Vớimỗi Ai với |Ai|=c, ta lần lượt biến các bóng đèn đã cho trước trạngthái (ban đầu là toàn ON) xem có phù hợp hay không. Nếu đúng, ta ghinhận. Bàitoán 3 : Xoayđồng hồ (Vô địch Hunggary 1991) Đề: Cho 9 cái đồng hồ,mỗi cái có 4 trạngthái chỉ giờ: 0,3,6,9 (hình 1) đánh số từ 1 đến 9 Cho 9 cách quay bộ đồng hồ như hình 2, dượcđánh số từ 1 đến 9 từ trên xuống, từ trái qua phải. Các ô bôi đenxác định đồng hồ tương ứng sẽ quay kim giờ 1 góc 90 độ. Ví dụ cách chọn sẵn ở hình 2 gồm cácđồng hồ 1,2,4,5. Cho trước 1trạng thái của bộ đồng hồ, hãy xác lập 1 số ít nhất số lần biếnđổi để đưa tất cả các đồng hồ về 0 giờ. Trongfile dongho.inp gồm trạng thái của 9 cái đồng hồ (0 3 tương ứng0,3,6,9 giờ). output Trongfile dongho.out gồm: - dòng đầu tiên là số lần biến đổi N. - N dòng tiếp theo lần lượt là số hiệu của các cách nhấn. ví dụ: dongho.inp 1 0 1 2 1 1 01 3 dongho.out 9 1 1 3 3 4 6 7 7 7 Giải: Ta có thể vét cạn tất cả các cấu hình, trong trường hợp xấu nhất là 49 (khá nhỏ) Tuy nhiên,ta có thể rútngắn thời gian tìm kiếm bằng 1 định lí: Tồn tại duy nhất đúng 1 cách quay tất cảcác đồng hồ về 0 giờ. Thật vậy, với bổ đề sau, ta có thể dễ dàngchứng minh định lí. 1/ thứ tự các cách nhấn là không quan trọng. 2/ số cách nhấn mỗi cách tối đa là 3. 3/ Từbất kì cấu hình nguồn nào, qua 1 số hữu hạn bước,ta đều đưa đưađược về cấu hình đích bất kì. C/m: Trước hết, ta đưa ra 3 nhận định: - Sốtrạng thái của bộ 9 đồng hồ là 49. - Nếugọi bộ cách biến đổi là ″tối giản″ nếu không có cách nào biếnquá 3 lần thì ta sẽ có 49 bộ tối giản. - Từmột cấu hình bất kì A đều tồn tại 1 cách bộ tối giản C để đưa vềtrạng thái bất kì B. c/m: Ta lấy đồng hồ số 1 làm gốc, ta xét sự chênh lệch của 9 đồnghồ F với đồng hồ 1 (khi đó F[1] sẽ =0). Độ chênh lệch là số góc vuông, theo thứtự vòng tròn cùng chiều kim đồng hồ, số 3 (9 giờ) đứng trước số0 (0 giờ). Đầu tiên, ta tạo cho các đồng hồ cáckhoảng cách tương ứng với đồng hồ 1 độ lệch cố định nào đó (từ 0 đến 3) với cấu hìnhB, gọi là cấu hình D. ví dụ: với B= 2 3 0 1 1 0 1 0 3 thì ta có thểđưa về: D= 1 2 3 0 0 3 0 3 2 { Mỗiđồng hồ thuộc D đều trễ hơn so với B 1 góc vuông } bằng cách thayđổi từng khoảng cách của từng đồng hồ một bởi các tổ hợp cách: Đồng hồ 1:2 4 9 -----------2 :1 2 3 4 5 6 8 8 -----------5 :2 4 6 8 1 9 tương tự cho cácđồng hồ còn lại. Sau khi đã cóD, ta lại xét các trường hợp khoảng cách D B, dựa vào đó, tasẽ san bằng khoảng cáchgiữa B D bằng tổ hợp biến đổi: Kcách = 0: {} -----------1: { 11 1 2 2 3 3 3 4 4 5 5 5 6 6 7 7 7 8 8 9 9 } (1) /* Ta sử dụng trình quay lui để tính giùm bước này*/ -----------2: { 11 3 3 5 5 7 7 9 9 } (2) /* Ta gấp 2 đơn giản cấu hình (1) */ -----------3: { 12 2 3 4 4 5 6 6 7 8 8 9 } /* ởđây ta cộng gộp đơn giản (1) và(2), rồi đơn giản */ Vậy là ta đã cócấu hình B, tập hợp tất cả các cách biến đổi trên lại thành tập E, đơngiản E ta được C. Bổ đề số 3 đã được chứng minh xong. Như vậy, ta có sựánh xạ song ánh từ tập 49 cách biến đổi đến 49cấu hình bộ đồng hồ. Vậy tồn tại duynhất một cách biến đổi để đưa một cấu hình bất kì đến cấu hìnhđích (Toàn 0 giờ) (đpcm). Bài toán 4 : Bài toán 3 bi(hay tắc kè đổi màu) Đề: Cho d viên biđỏ, v viên vàng, x viên xanh.(d,v,xthuộc N). Hai viên bi khácmàu gặp nhau sẽ chuyển thành màu thứ 3 (ví dụ như hình 3). Hỏi có thểbiến tất cả thành 1 màu không. Nếu có, hãy trình bày chi tiết các phépbiến đổi. Input: Từ file 3bi.inp Dòngđầu gồm v,x,d Dòngtiếp theo gồm 1 trong 3 kí tự: ′v′,′x′,′d′ mô tả màu bi cầncuối cùng cần biến đổi. Output: Trong file 3bi.out Dòngđầu:1 nếu có thể biến tất cả thành một loại bi yêu cầu. 0 nếu ngượclại. Trong trường hợp có phép biến đổi: inra quy luật biến đổi các viên bi gồm nhiều dòng theo kết cấu v x d (sốlượng bi vàng, xanh, đỏ qua mỗi lần biến đổi). ví dụ: 3bi.inp 1 4 2 3bi.out 1 0 3 4 2 2 3 1 1 5 0 0 7 Đểđơn giản, ta giả sử cần biến tất cả các viên bi thành màu đỏ. Làm thế nào để biết có thể hay khôngđược? Ta lại tiếp tục xây dựng các mệnh đềMệnh đề: Bài toán vô nghiệm khi chỉ khiC/m : Thuận Đảo Với (*) không xảy ra,ta tiến hành triệtbớt x v, bằng cách biến xanh + vàng → 2 đỏ.(**) cho tới khi 1 trong 2 màu vàng, xanh =0; Giả sử v=0, ta có 2 trường hợp: - x=0, bàitoán đã giải quyết xong. - x≠ 0, ta tái tạo 1 v bằng cách kết hợp x d tạo v.(***) Do lúc này d ≠0, (từ (*), (**)) nên bước (***) luôn thực hiện được. v=1 sau bước(***) phải ≤ x (do v-x (trước (***))≥3). Do vậy qua 1 số hữu hạn lần biến đổita sẽ có v=x=1. Sau đó, ta triệt tiêu xanh vàng. Vậylà bài toán đã giải quyết xong trọn vẹn. Các bạn thấy đấy,một bài toán có vẻrối mù, qua từng bước phân tích bằng bổ đề, đã đơn giản hơn rấtnhiều. Có thể giải quyết khá nhẹ nhàng. Ngoài ra việc tìm chứngminh bổ đề lại rất thú vị nữa. Chương trình cụ thể tôi xin không trìnhbày vì sự hạn hẹp của trang báo. Bài này chỉ dựa trên kinh nghiệm của riêngtôi. Có thể nó hay hơn, hay dở hơn cách giải của các bạn. Các bạn nàocó cách giải tổng quát hơn, hay hơn, hay cần source, hay mọi ý kiếnphê bình xin cho biết tại, trân trọng. . Mệnh đề và một số bài toán biến đổiLê Trần Hoài NamCácbạn thân mến! Qua các cuộc thi, hẳnta đã tiếp xúc khá nhiều bài toán mang tính chất biến đổi. biến đổi để đưa một cấu hình bất kì đến cấu hìnhđích (Toàn 0 giờ) (đpcm). Bài toán 4 : Bài toán 3 bi(hay tắc kè đổi màu) Đề: Cho d viên biđỏ, v viên vàng,

Ngày đăng: 07/09/2012, 10:53

Hình ảnh liên quan

Cho 9 cái đồng hồ,mỗi cái có 4 trạngthái chỉ giờ: 0,3,6,9 (hình 1) đánh số từ 1 đến 9 Cho 9 cách quay bộ đồng hồ như hình 2, dượcđánh số từ 1 đến 9 từ trên xuống, từ trái qua  phải - Bài toán mệnh đề và biến đổi

ho.

9 cái đồng hồ,mỗi cái có 4 trạngthái chỉ giờ: 0,3,6,9 (hình 1) đánh số từ 1 đến 9 Cho 9 cách quay bộ đồng hồ như hình 2, dượcđánh số từ 1 đến 9 từ trên xuống, từ trái qua phải Xem tại trang 4 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan