В этой статье мы разберём, как традиционный китайский трактат Книга Перемен (И Цзин, I Ching) можно трактовать как набор алгоритмов. Мы будем использовать простые шаги, таблицы и примеры, чтобы показать, как можно превратить древний гадательный механизм в современную систему принятия решений.
Что такое Книга Перемен?
Книга Перемен – это древнее китайское произведение, посвящённое космическим законам и нравственному учению. В ней содержится 64 гексаграммы, каждая из которых представляет собой комбинацию шести черт (тянь – «состояние»), записанных как «плоские» (‑) и «разломанные» (– –). Эти гексаграммы можно рассматривать как «текущие» состояния мира, а их изменения – как алгоритмы, ведущие к решению задачи.
Алгоритмический взгляд на гексаграммы
В программировании мы часто сталкиваемся с 2‑значными состояниями (0 и 1). Гексаграммы – это же 6‑битовые числа. Таким образом, каждую гексаграмму можно представить как целое число от 0 до 63, а её «переходы» – как операции над битами.
2.1 Представление гексаграммы в двоичном виде
- Плоская черта (‑) – 0
- Разломанная черта (– –) – 1
Например, гексаграмма «☰» (шесть плывущих черт) → 111111₂ → 63₁₀.
2.2 Алгоритм изменения гексаграммы
- Выберите гексаграмму (число от 0 до 63).
- Выполните операцию «тянь»: переверните одну из черт (поменяйте 0 на 1 или 1 на 0).
- Получите новую гексаграмму – это будет «следующее» состояние.
- Повторите шаг 2, пока не достигнете желаемого состояния.
Таким образом, любые решения можно рассматривать как поиск пути в графе из 64 вершин, где ребра соединяют гексаграммы, отличающиеся ровно одной чертой.
Практический алгоритм: гадание как поиск решения
Ниже приведён пошаговый алгоритм, который можно реализовать в любой программной среде (Python, JavaScript, C++ и др.).
- Инициализация: задать начальную гексаграмму – число
start(0‑63). - Функция перехода:
def next_hexagram(current, bit): # bit – номер черты (0‑5), начиная с нижней return current ^ (1 << bit)
- Цикл поиска:
def find_path(start, goal): visited = set stack = [(start, [])] while stack: node, path = stack.pop if node == goal: return path + [node] if node in visited: continue visited.add(node) for i in range(6): next_node = next_hexagram(node, i) stack.append((next_node, path + [node])) return None
Пример решения задачи
Допустим, вы хотите перейти от гексаграммы «☱» (111000₂ → 56) к гексаграмме «☲» (110111₂ → 55). Алгоритм будет следующим:
- 56 → 55: поменять 6‑й бит (самую нижнюю черту) с 1 на 0.
Результат: один шаг. Это и есть «простой алгоритм» – изменение одной черты.
Список полезных ресурсов
- Книга Перемен (И Цзин) – оригинальный текст (в переводе и в оригинале).
- Алгоритмы и структуры данных – учебники по компьютерным наукам, где можно изучить графы и поиск в глубину.
- Python‑реализация И Цзин – репозитории на GitHub, где уже реализованы функции работы с гексаграммами.
- Книги по синергетике – книги, посвящённые взаимосвязям и изменению систем.
- Онлайн‑сервисы гадания – сайты, где можно получить гексаграмму по бросанию монет.
Книга Перемен – не просто древний гадательный трактат, а богатый источник алгоритмических идей. Перевод её в язык программирования открывает новые возможности: от простого поиска пути до сложных систем принятия решений. Если вы интересуетесь как древней мудростью, так и современными технологиями, то алгоритмический подход к Книге Перемен – отличный способ объединить эти две области.
Надеемся, что эта статья помогла вам увидеть новые горизонты в использовании Книги Перемен как алгоритмической модели. Happy coding and good luck with your decisions!