THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 96

N u con ki n đ ng trên ô tr ng; nó quay sang ph i, tô màu ô thành đen, r i ti n b

c.

ế

ế

ồ ế

ướ

N u con ki n đ ng trên ô đen; nó quay sang trái, tô màu ô thành tr ng, r i ti n b

c.

ế

ế

ồ ế

ướ

Vì nh ng quy lu t này r t đ n gi n nên b n s trông đ i r ng con ki n này s làm nh ng đi u đ n gi n

ấ ơ

ạ ẽ

ợ ằ

ế

ơ

nh ch y vòng quanh ho c l p l i m t m u hình đ n gi n. Song n u ki n ta b t đ u trên l

i ô toàn

ư ạ

ặ ặ ạ

ơ

ế

ế

ắ ầ

ướ

màu tr ng thì nó s đi h n 10000 b

c theo m t d ng m u t

ng nh ng u nhiên tr

c khi vào m t

ơ

ướ

ộ ạ

ẫ ưở

ư

ướ

vòng l p g m 104 b

c.

ướ

B n có th đ c thêm v con ki n Langton t i

ể ọ

ế

http://en.wikipedia.org/wiki/Langton_ant.

Th t không d l p nên con ki n Langton trong GridWorld vì ta không th đ t màu c a các ô. Song thay

ễ ậ

ế

ể ặ

vào đó, ta có th dùng nh ng bông hoa đ đánh d u ô. Có đi u là ta không th có đ ng th i c ki n l n

ờ ả ế ẫ

hoa trên cùng m t ô, nên ta không hoàn toàn th c hi n đúng đ

c nh ng quy lu t v i con ki n.

ượ

ậ ớ

ế

Thay vào đó ta s t o nên m t con m i có tên

ẽ ạ

LangtonTermite, trong đó dùng seeFlower đ ki m tra

ể ể

xem ô tr

c m t có bông hoa không, và n u ô tr

c m t có bông hoa, thì dùng

ướ

ế

ướ

pickUpFlower đ hái nó,

và throwFlower đ đ t hoa xu ng ô k ti p. B n có th s mu n đ c mã l nh c a nh ng ph

ng th c

ể ặ

ế ế

ể ẽ

ươ

này đ ch c r ng chúng làm gì.

ể ắ ằ

10.3 Bài t p

Bài t p 1

Bây gi b n đã bi t đ ki n th c đ làm bài t p trong cu n Sách bài t p (Student Manual),

ờ ạ

ế ủ ế

ứ ể

Ph n 2. Hãy làm nh ng bài này, r i xem ti p nh ng bài lý thú d

i đây.

ế

ướ

Bài t p 2

M c đích c a bài t p này là khám phá bi u hi n c a các con m i khi t

ng tác v i nh ng

ệ ủ

ươ

bông hoa. Hãy s a ch a

ữ TermiteRunner.java đ t o nên nh ng

ể ạ

ữ MyTermite thay vì các Termite. Sau đó

ch y l i.

ạ ạ MyTermite s ch y vòng quanh

ẽ ạ

m t cách ng u nhiên, làm d ch chuy n nh ng bông hoa. T ng

s bông hoa ph i không đ i (k c nh ng mông mà

ể ả

MyTermite đang gi ). Trong cu n “Termites,

Turtles and Traffic Jams”, Mitchell Resnick đã mô t m t mô hình đ n gi n cho bi u hi n c a con m i:

ả ộ

ơ

ệ ủ

N u b n th y bông hoa, hãy nh t nó lên. Tr khi b n đã có hoa r i; trong tr

ng h p này thì v t b

ế

ườ

ứ ỏ

bông hoa hi n có.

Ti n b

c, n u có th .

ế

ướ

ế

Quay sang trái ho c ph i m t cách ng u nhiên.

Hãy s a ch a

ữ MyTermite.java đ th c hi n mô hình này. Theo b n thì thay đ i trên s có hi u ng gì

ể ự

ệ ứ

đ i v i bi u hi n c a các

ố ớ

ệ ủ

MyTermite?

Hãy th ch y ch

ng trình. M t l n n a, t ng s bông hoa không đ i, nh ng d n d n hoa s t l i

ử ạ

ươ

ộ ầ

ư

ẽ ụ ạ

thành m t s ít các đ ng, nhi u khi ch là m t đ ng.

ộ ố

ộ ố

Bi u hi n này là m t

thu c tính n i

, mà b n có th tham kh o

http://en.wikipedia.org/wiki/Emergence. Các con MyTermite tuân theo nh ng quy t c đ n gi n ch

ắ ơ

b ng thông tin quy mô nh , song k t qu s là s t ch c có quy mô l n.

ế

ả ẽ

ự ổ ứ

Hãy th nghi m v i nh ng quy t c khác nhau và xem chúng có tác đ ng gì lên h th ng. Nh ng thay

ệ ố

đ i nh có th gây nên k t qu không l

ng tr

c!

ế

ườ

ướ

Bài t p 3

1.

Sao chép l i file

Termite.java r i đ t tên thành

ồ ặ

LangtonTermite và sao

chép TermiteRunner.java thành LangtonRunner.java. Hãy s a ch a sao cho nh ng đ nh nghĩa l p có

tên trùng v i tên file, và do đó

LangtonRunner t o nên m t

ộ LangtonTermite.