Рассуждение о сознании и компоненте сильной связности
Вообще, одна из моих основных теорий состоит в том, что сознание ограничено компонентой сильной связности из теории графов. В том смысле, что в «программе» мозга человека есть группа переменных, которые на протяжении некоторого времени могут влиять друг на друга, но отделены от других переменных, на которые они влиять не могут (например, сознание не может поменять температуру тела, напрямую влияя на гипоталамус). Проблема данной идеи в том, что если смотреть на то, как устроен наш мир с точки зрения физики, то очевидно, что всё в мире влияет на всё (хотя и ограничено это влияние скоростью света). Соответственно, сознание, получается, — это компонента сильной связности, включенная в более крупную компоненту сильной связности (мир). Появляется вопрос: а как их разграничить, как отсоединить сознание человека от сознания мира (если оно есть в смысле Спинозы), если они — части единой компоненты сильной связности?
Можно подумать об этом в смысле простого алгоритма, выполняемого на компьютере. Пусть у нас есть программа, внутри которой два бота играют между собой в шахматы. Пусть боты — это подпрограммы, которые просто перебирают возможные ходы и применяют этот перебор у себя в «уме». Если мы будем анализировать память программы во время ее выполнения, то заметим, что есть группы переменных в памяти, которые на некоторое время причинно-следственно отделены от других групп переменных — то есть создают поток (без общей памяти на запись) или, по-другому, просто процедуру (функцию без побочных эффектов). Она может обладать внутренней сильной связностью, хоть и возможны случаи, когда она ею не обладает. Тогда границей бота становится эта группа переменных. То есть по этой логике мы считаем, что компонента сильной связности бота отделена от компоненты сильной связности всей программы (шахматы + боты) именно тем фактом, что часть переменных (которые относятся к боту) варится в собственном соку определенное время. Соответственно, вход и выход для бота — это те состояния алгоритма, при которых компонента сильной связности бота образуется из компоненты сильной связности всей программы и когда она, наоборот, исчезает (влияние растворяется во всей программе).
Это немного похоже на то, как устроены виртуальные машины. Представим, что у нас есть программа на C++, которая является интерпретатором программы на Brainfuck. Несмотря на то, что общий граф вычислений интерпретатора может быть сильно связан, в нем на время работы виртуальной машины Brainfuck образуется локальная (во времени) компонента сильной связности, которая, собственно, и выполняет программу на Brainfuck. Так как, само собой, мы можем делать виртуальную машину над виртуальной машиной, то уровень вложенности виртуальных машин создает луковичную структуру этих агентов, где один агент может быть встроен в другой.
Другой интересный вопрос, связанный с этими рассуждениями: как понять, кто кем управляет, и возможно ли это в принципе с точки зрения математики в наших примерах с шахматами и виртуальной машиной? С точки зрения математической теории управления динамическими системами, управление — это нахождение такой последовательности (функции) действий, которая позволяет добиваться поставленной цели (какого-то состояния/подсостояния) динамической системы в будущем. Проблема этого определения в том, что цели у разных агентов могут быть разными, во-первых, а во-вторых, мы хотим понять, что мы рассматриваем и подразумеваем под управлением: управление как придуманную агентом последовательность ходов для достижения цели, или все-таки то, что случилось в реальности и кто из агентов на самом деле выиграл. Например, в случае c С++ и Brainfuck легко можно сделать так, что программа на Brainfuck через некоторое время будет давать инструкции программе на C++, и наоборот.




