{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блог Гизата Маханова: заметки с тегом computer science",
    "_rss_description": "Блог Гизата Маханова о бизнесе, продуктовом менеджменте, акваскейпинге и других интересах",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/gizat.kz\/tags\/computer-science\/",
    "feed_url": "https:\/\/gizat.kz\/tags\/computer-science\/json\/",
    "icon": "https:\/\/gizat.kz\/pictures\/userpic\/userpic@2x.jpg?1684648749",
    "authors": [
        {
            "name": "Гизат Маханова",
            "url": "https:\/\/gizat.kz\/",
            "avatar": "https:\/\/gizat.kz\/pictures\/userpic\/userpic@2x.jpg?1684648749"
        }
    ],
    "items": [
        {
            "id": "9",
            "url": "https:\/\/gizat.kz\/all\/ca\/",
            "title": "Клеточный автомат",
            "content_html": "<h2>Введение<\/h2>\n<p>Если отбросить часть теории эволюции, где обезъяна превращается в человека, то у этой теории есть интересные применения.<\/p>\n<p>Поколение за поколениями, все биологические объекты (животные, растения, бактерии) прошли через какие-то изменения. С каждым изменением биологический вид лучше приспосабливался к  изменениям в окружающей среде, соответственно учился выживать. В результате нашу планету населяют сильные, натренированные биологические объекты, поведения которых мы можем имитрировать при создании технологий и поиска ответов на разные социальные феномены.<\/p>\n<p>Например, изучая принципы работы мозга человечество создало искуственные нейронные сети, которые используются для таргетирования рекламы на вашей ленте. Другой пример — летающие роботы, которых создали изучая поведения летучих мышей.<\/p>\n<p>Сегодня хочу рассказать подробнее про то, как компьютерная наука имитирует функции клеток.<\/p>\n<h2>Клеточный автомат<\/h2>\n<p>Клеточный автомат — это модель; попытка человечества имитировать поведение клеток.<\/p>\n<p>Возьмем некий отрезок биологической ткани и разложим на сетке. Представим, что в каждой ячейке этой сетки сидит клетка. У каждой этой клетки есть соседи — другие клетки. Также у каждой клетки есть свое состояние — живая (1) или мертвая (0).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/grid.jpg\" width=\"776\" height=\"602\" alt=\"\" \/>\n<\/div>\n<p>На примере выше мы смотрели на двухмерную сетку, но эти сетки могут быть многомерными. Но для простоты мы далее рассмотрим одномерную сетку.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/grid-1d-full.jpg\" width=\"970\" height=\"216\" alt=\"\" \/>\n<\/div>\n<p>Как и в примере выше, у каждой клетки в одномерной сетке есть соседи — клетка справа и слева (за исключением самых крайних двух). Также состояние каждой клетки мы обозначим 1 (живая клетка) или нулем (мертвая клетка).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/grid-1d-full-neighbors.jpg\" width=\"977\" height=\"214\" alt=\"\" \/>\n<\/div>\n<p>Чтобы проследить как эти клетки меняются со временем (эволюционируют), нам необходимо внедрить понятие времени. Все клетки в нашей первичной сетке живут в одном и том же времени; принадлежат одному поколению. Значит новое поколение мы можем показать другой сеткой такой же длины и вставить ниже. Так мы создадим несколько поколений.<\/p>\n<p>Итак, мы разобрались с приницпами существования клеток в пространстве компьютерных битов. <b>Оставется важный вопрос: как меняются новые поколения?<\/b><\/p>\n<h2>Правило 184<\/h2>\n<p>Это, пожалуй, самая важная часть клеточных автоматов. Представим, что состояние (0 или 1) одной клетки в поколении определяется тремя соседствующими клетками предыдущего поколения.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/grid-1d-full-neighbors-evolution.jpg\" width=\"2214\" height=\"926\" alt=\"\" \/>\n<\/div>\n<p>Таким образом, чтобы определить состояние каждой клетки в поколении, нам необходимо посмотреть на состояние каждой тройки клеток из предыдущего поколения. Это правило называется «Правилом 184» или «Правилом дорожного движения».<\/p>\n<p>Представим отрезок одностороней дороги, где могут поместиться три автомобиля. Все они едут слева на право. Автомобиль может занять только свободную ячейку впереди. Таким образом мы можем представить восемь сценариев:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/rule184.jpg\" width=\"1793\" height=\"914\" alt=\"\" \/>\n<\/div>\n<p>Это и есть «Правило 184».<\/p>\n<p>Есть множество таких правил, которые можно применить для имитации разных феноменов. Например, одно из таких правил создает узоры как у улиток.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/bio-snail.jpg\" width=\"800\" height=\"600\" alt=\"\" \/>\n<\/div>\n<h2>Применение<\/h2>\n<p>Закончим с теорией и перейдем к программированию и визуализации клеточных автоматов по правиле 184. Мы нарисуем мертвую клетку белым цветом, а живую черным. Каждая строка — это одно поколение.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/example-1.png\" width=\"468\" height=\"482\" alt=\"\" \/>\n<\/div>\n<p>На картинке видно как скопление клеток в первых поколениях (верхняя строка) «движется» налево. Если представить мир автомобилей, то это скопление автомобилей переходит назад, или другими словами, дорожная пробка притормаживает движение автомобилей сзади.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gizat.kz\/pictures\/examples-many.png\" width=\"477\" height=\"482\" alt=\"\" \/>\n<\/div>\n<p>Это конечно не идеальное отражение сложных механзимов дорожных пробок, но помогает симулировать разные сценарии развития пробок.<\/p>\n<h2>Эпилог<\/h2>\n<p>Мы рассмотрели самый простой пример клеточного автомата. С более сложными моделями можно создать целый мир клеток, которые могут существовать «сами по себе» — размножаться, питаться, и умирать.<\/p>\n",
            "date_published": "2019-03-01T09:09:00+05:00",
            "date_modified": "2021-11-09T09:09:51+05:00",
            "tags": [
                "computer science"
            ],
            "image": "https:\/\/gizat.kz\/pictures\/grid-1d.jpg",
            "_date_published_rfc2822": "Fri, 01 Mar 2019 09:09:00 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "9",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/gizat.kz\/pictures\/grid-1d.jpg",
                    "https:\/\/gizat.kz\/pictures\/example-2.png",
                    "https:\/\/gizat.kz\/pictures\/grid.jpg",
                    "https:\/\/gizat.kz\/pictures\/grid-1d-full.jpg",
                    "https:\/\/gizat.kz\/pictures\/grid-1d-full-neighbors.jpg",
                    "https:\/\/gizat.kz\/pictures\/grid-1d-full-neighbors-evolution.jpg",
                    "https:\/\/gizat.kz\/pictures\/rule184.jpg",
                    "https:\/\/gizat.kz\/pictures\/bio-snail.jpg",
                    "https:\/\/gizat.kz\/pictures\/example-1.png",
                    "https:\/\/gizat.kz\/pictures\/examples-many.png"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}