1. Trang chủ
  2. » Công Nghệ Thông Tin

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

7 1,1K 2
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 158,5 KB

Nội dung

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

Trang 1

Mệnh đề và một số bài toán biến đổi

Lê Trần Hoài Nam

Cá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, và đô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) và 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 và 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 và trạng thái đầu A, trạngthái đích B, kết quả in

ra ở file ′battat.out′ gồm số S và 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

Trang 2

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, và 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 và =2 nếu tuơng tự

c[2,i]=1 nếu cột i thuộc tập hợp 1 và =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 và 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 và 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 và trạng thái

Trang 3

cuốicùng của một số ngọn đèn.

Dòng đầu tiên chứa số N và 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 và kếtthúc bằng số nguyên -1

party.inp

10

1

-1

7 -1

Trong 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 và 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 và 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 và 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 và các ngọn đèn 2, 4, 6, 8, 10 ở trạng thái

ON

Ràngbuộc Các tham số N và C thỏa mãn điều kiện:10 ≤ N ≤ 100, 1 ≤C ≤10000

Số 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 40+ 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:

Trang 4

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

Trang 5

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 và B, dựa vào đó, tasẽ san bằng khoảng cáchgiữa B và 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 và đơ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

Trang 6

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 và chỉ khi

C/m :

Thuận

Đảo

Trang 7

Với (*) không xảy ra,ta tiến hành triệtbớt x và 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 và d tạo v.(***)

Do lúc này d ≠0, (từ (*), (**)) nên bước (***) luôn thực hiện được Và 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à 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 và 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

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 (Trang 4)

TỪ KHÓA LIÊN QUAN

w