Cellular automata is, first and foremost, a study of complex behaviors emerging from simple rules
Cellular Automata (CA) hiểu nôn na có 2 khái niệm:
– Cell: Các phần tử nhỏ nhất
– Automata: Tự động hành động
CA dùng để mô ta việc các phần tử trong 1 hệ thống tự động “hành động” theo một số điều kiện nào đó.
Ví dụ trong bàn Cờ Vua, mỗi ô là 1 Cell, khi các quân cờ được đặt vào Cell nó phải hoạt động theo “Local Rule”, ví dụ rõ ràng nhất là quân Tịnh chỉ được đi chéo theo màu của Cell mình được đặt ở đầu ván.
Trong lập trình, mỗi phần tử của 1 mảng / array có thể được gọi là 1 Cell
arr = [1, 3, 2, 9, 11]
Nếu không có “rule” gì thì các cell trong mảng trên sẽ đứng yên, tuy nhiên nếu lập trình viên muốn các Cell được sắp lại theo điều kiện từ cao đến thấp thì sẽ phải áp dụng 1 rule lên mảng này
arr = [1, 3, 2, 9, 11]
arr.sort() // Áp dụng Rule / luật
// Kết quả
arr = [11, 9, 3, 2, 1] // Các Cell được sắp từ cao đến thấp
Những bạn học lập trình sẽ hiểu việc sắp xếp trên không diễn ra ngay lập tức, mà phải trả qua 1 “quá trình” so sánh giá trị của từng cặp Cell, rồi mới đẩy Cell có giá trị cao hơn lên trước.
(Minh họa một số “Rule” về sắp xếp các “Cell” trong một mảng bằng các thuật toán khác nhau)
Ok, giờ hãy mở rộng từ mảng một chiều thành mảng 2 chiều, bàn cờ vua là ví dụ điển hình của mảng 2 chiều 8×8. Nhưng trong ví dụ này chúng ta sẽ không dùng quân cờ, mà đặt vào mỗi ô 1 Cell, ô có Cell thì vẽ màu Đen, còn ô không có Cell nào “sống” trong đó thì để màu trắng


Giả sử Rule của bàn cờ thay đổi 1 lần / giây, khi vẽ lại các Cell đen trắng trên bàn cờ, ta sẽ nhận được một hình động

Khi bạn làm việc với 1 CA, bạn tự do định nghĩa các rule của mình, ví dụ thay vì dã tăng dần thì bạn có thể đổi thành giảm dần, hay sắp theo chẵn lẻ, …
Một số bộ Rule nổi tiếng và có nhiều minh họa như: Conway’s game of life; Wolfram (tác giả search engine wolframalpha
Nhưng điều gì làm khái niệm CA này trở nên vô cùng thú vị ?
Có lẽ 3 ví dụ trên quá “khô cứng” và không trả lời được câu hỏi này. Nên mình sẽ đưa ra 1 số ví dụ ngắn gọn khác, bạn nào có thời gian có thể tìm hiểu thêm:
- Cách các tế bào gốc (Cell) tự tuân theo các local rule để biến thành tế bào chuyên biệt: thành xương, thành da, …
- Giải thích các đốm vằn trên da động vật bằng “Turing Pattern” do chính Alan Turing – cha đẻ của máy tính – tìm ra.
- Cách hình thành của tổ ong, tổ mối, tổ kiến.
- Cách các neuron thần hinh phân bổ để thành các phần chuyên biệt của não.
Và còn nhiều ví dụ khách, bạn hãy tự tìm hiểu theo keyword Cellular Automata nhé.