Алгоритм мышления и сознания

В этой статье изложен алгоритм мышления и сознания. Я предлагаю свой ответ на вопрос о том как работает мышление и сознание. И демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием. Статья рассчитана на программистов и состоит из двух основных частей. Первая часть сугубо техническая, она содержит описание алгоритма, перечень его свойств и пример практического применения. Вторая часть содержит поясняющие тезисы и решение вопроса конструктивной аксиоматизации сознания. Алгоритм это содержательный текст который говорит сам за себя, а потому комментариев будет лишь практически необходимый минимум.

Описание алгоритма


Описание алгоритма выполнено в самодельном математизированном формализме по принципу «сверху вниз», то есть сначала дается окончательная, абстрактная запись, а после этого идет разбор алгоритма на запчасти в порядке осуществления вызовов и даются комментарии. Итак, алгоритм “в сборе” представляет собой рекурсивную функцию следующего вида:

tn+1 = composition[abstraction[deduction[tn]]]; t0 = s; tn, s ∈ S; n ∈ N

Вычисление этой функции есть мышление. Как видно, в записи фигурируют три оператора:
composition[], abstraction[], deduction[]; имеются так же: затравочная переменная s ∈ S, множество строк специального вида S и номер шага n ∈ N. Далее рассмотрим подробно каждую запчасть. Начнем с множества S и его элементов.

Для того чтобы задать множество S необходимо определить синтаксис в котором будут записываться элементы этого множества. Элементы множества S будем называть строками. Любая строка из S состоит из иерархии скобок “(“, ”)”, а внутри скобок записываются произвольные символьные идентификаторы. Для того чтобы избежать употребления термина “идентификатор”, так как он может потребоваться для других целей, символьные идентификаторы внутри скобок дальше будут называться “мнемоники”. Каждая мнемоника записывается символами латинского алфавита “A — z”. Мнемоники внутри скобок могут разделяться запятой “,”. Если длина мнемоник фиксирована, что оговаривается отдельно, разделитель не ставится. Мнемоники записываются только внутри скобок. В строке могут быть вложенные скобки. Иерархия скобок в строке произвольна, но на каждую открывающую скобку должна быть закрывающая. В этой статье для записи мнемоник я буду использовать только маленькие буквы латинского алфавита, а длина мнемоник будет фиксированной, одна буква соответствует одной мнемонике, символ разделитель не ставлю. Примеры строк:

() ≡ ∅ — пустая строка.
(a) — строка содержащая одну мнемонику “a”.
(aa) — строка содержащая два экземпляра мнемоники “a”.
(ab) — строка содержащая две мнемоники “a” и “b”.
((a)(a)) — строка содержит два экземпляра мнемоники “a” и вложенные уровни скобок.

Вложенные скобки, вместе с их содержимым, а так же отдельные мнемоники иногда буду называть “компоненты строки”, в тех случаях где требуется соответствующее обобщение. Например, строка ((a)ab) содержит четыре компонента, среди них: два компонента “a”, один компонент “(a)” и один компонент “b”.

Записи строк которые совпадают с точностью до перестановки компонентов внутри строки считаются тождественными. Примеры тождественных строк:

(ab) ≡ (ba).
((a)(b)) ≡ ((b)(a)).
(abc) ≡ (bac) ≡ (cba) ≡ (acb) ≡ (bca) ≡ (cab).
((a)(ab)) ≡ ((a)(ba)) ≡ ((ab)(a)) ≡ ((ba)(a)).

Строки могут содержать сколько угодно одинаковых, повторяющихся компонентов, и в этом случае допустима сокращенная запись при помощи индекса повторения, который ставится перед компонентом слева, без разделителя. Примеры:

(aa) ≡ (2a).
(aabb) ≡ (2a2b).
((a)(a)) ≡ (2(a)).
((aa)(aa)) ≡ (2(2a)).
(aa(bb)(bb)(ccc)(ccc)(ccc)) ≡ (2a2(2b)3(3c)).

В тех случаях, когда строка содержит пустые компоненты, например, (a()), (a()()(b)) имеют место тождества: (a()) ≡ (a), (a()()(b)) ≡ (a(b)), то есть пустые компоненты выбрасываются.

Определение. Множество S состоит из всех возможных строк которые удовлетворяют указанным выше синтаксическим критериям, включая пустую строку.

Операторы дедукции, абстракции и композиции определены на множестве S. Аргументы операторов указываются в квадратных скобках [], поскольку круглые скобки зарезервированы для синтаксиса строк. Термин “оператор” является синонимом термина “функция”.

Оператор дедукции. Определение. ∀s ∈ S, deductionk[s] ∈ S, k ∈ N, k > 1, deduction[s] ≝ deduction2[s]. В качестве аргумента принимает строку s из S. В результате возвращает строку из S. Действие. Оператор k раз дублирует каждый компонент строки и всю строку целиком. Результирующая конструкция обрамляется общими наружными скобками. Дублирование начинается с самых глубоких, по уровню вложенности, компонент. Вся строка целиком дублируется в последнюю очередь. Для ближайших практических целей достаточно чтобы k=2, поэтому я определил специальный случай deduction[s] ≝ deduction2[s]. Употребление deduction[] подразумевает что k=2, то есть в результате действия оператора deduction[s] все компоненты строки s удваиваются. Примеры:

deduction[(a)] = ((aa)(aa)).
deduction[(aa)] = ((aaaa)(aaaa))
deduction[(ab)] = ((aabb)(aabb)).
deduction[(a(b))] = ((aa(bb)(bb))(aa(bb)(bb))).
deduction[((a)(b))] = (((aa)(aa)(bb)(bb))((aa)(aa)(bb)(bb))).
deduction[((a)(b(cc)))] = (((aa)(aa)(bb(cccc)(cccc))(bb(cccc)(cccc)))((aa)(aa)(bb(cccc)(cccc))(bb(cccc)(cccc))))
.

Оператор абстракции. Определение. ∀s ∈ S, abstraction[s] ⊂ S. В качестве аргумента принимает строку s из S. В результате возвращает множество строк. Принцип действия. Из исходной строки оператор абстракции создает множество строк при помощи специальной операции — вынесение за скобки одинаковых компонент. Операция вынесения за скобки применяется только для вложенных скобок которые находятся на одинаковом уровне вложенности. Общий принцип вынесения за скобки. Если в каком-либо сочетании расположенных на одном уровне скобок, внутри скобок имеются одинаковые компоненты, тогда любой набор из одинаковых компонентов можно вынести за скобки, а компоненты которые остались нетронутыми должны объединиться под одни общие скобки того же уровня. Рассмотрим пример. Строка ((ab)(ac)). В этой строке на одном уровне находятся две подстроки: (ab) и (ac), внутри которых есть одинаковая мнемоника "a", эту мнемонику можно вынести за скобки и в результате получится (a(bc)). Как видно, оставшиеся мнемоники "b" и "c" объединились в общих скобках. Рассмотрим менее очевидный пример. Строка ((aa)(aa)) содержит подстроки (aa) и (aa), в данном случае возможны два различных варианта вынесения за скобки. В первом варианте из каждой подстроки можно вынести за скобки только одну мнемонику "a", а во втором варианте можно вынести группу мнемоник "aa". Рассмотрим оба варианта подробнее.

Первый вариант, демонстрация по шагам:

  1. Шаг первый, выбираем(красным) что выносить ((aa)(aa)).
  2. Шаг второй, выносим выбранное (a(...a)(...a)).
  3. Шаг третий, объединяем остатки в общих скобках (a(...a...a)).
  4. Результат (a(aa)).

Второй вариант, по шагам:

  1. Шаг первый, выбираем что выносить ((aa)(aa)).
  2. Шаг второй, выносим выбранное (aa(...)(...)).
  3. Шаг третий, объединяем остатки в общих скобках (aa(...)).
  4. Шаг четвертый, выбрасываем пустые компоненты (aa).
  5. Результат (aa).

Усложним пример. Пускай дана строка ((aa)(aab)(aab)), в ней имеются три подстроки расположенные на одном уровне: (aa), (aab), (aab), во всех трех есть одинаковый контент. Правило вынесения за скобки не обязывает нас осуществлять операцию сразу для всех трех подстрок. Для операции вынесения можно выбрать любую группу подстрок.

В данном случае есть три нетождественных варианта группировки подстрок:

  1. (aa), (aab).
  2. (aab), (aab).
  3. (aa), (aab), (aab).

Осуществим все возможные вынесения для каждого из вариантов группировки, пошагово.

Группировка (aa), (aab). Строка ((aa)(aab)(aab)).

Первый вариант:

  1. Выбираем контент ( (aa)(aab) (aab)).
  2. Выносим ( a(...a)(...ab) (aab)).
  3. Объединяем ( a(...a...ab) (aab)).
  4. Результат №1 (a(aab)(aab)).

Второй вариант:

  1. Выбираем контент ( (aa)(aab) (aab)).
  2. Выносим ( aa(...)(...b) (aab)).
  3. Объединяем ( aa(...b) (aab)).
  4. Результат №2 (a(b)(aab)).

Группировка (aab), (aab). Строка ((aa)(aab)(aab)).

Первый вариант:

  1. Выбираем контент ((aa) (aab)(aab) ).
  2. Выносим ((aa) a(...ab)(...ab) ).
  3. Объединяем ((aa) a(...ab...ab) ).
  4. Результат №3 (a(aa)(aabb)).

Второй вариант:

  1. Выбираем контент ((aa) (aab)(aab) ).
  2. Выносим ((aa) aa(...b)(...b) ).
  3. Объединяем ((aa) aa(...b...b) ).
  4. Результат №4 (aa(aa)(bb)).

Третий вариант:

  1. Выбираем контент ((aa) (aab)(aab) ).
  2. Выносим ((aa) ab(...a)(...a) ).
  3. Объединяем ((aa) ab(...a...a) ).
  4. Результат №5 (ab(aa)(aa)).

Четвертый вариант:

  1. Выбираем контент ((aa) (aab)(aab) ).
  2. Выносим ((aa) b(...aa)(...aa) ).
  3. Объединяем ((aa) b(...aa...aa) ).
  4. Результат №6 (b(aa)(aaaa)).

Пятый вариант:

  1. Выбираем контент ((aa) (aab)(aab) ).
  2. Выносим ((aa) aab(...)(...) ).
  3. Объединяем ((aa) aab(...) ).
  4. Результат №7 (aab(aa)).

Группировка (aa), (aab), (aab). Строка ((aa)(aab)(aab)).

Первый вариант:

  1. Выбираем контент ((aa)(aab)(aab)).
  2. Выносим (a(...a)(...ab)(...ab)).
  3. Объединяем (a(...a...ab...ab)).
  4. Результат №8 (a(aaabb)).

Второй вариант:

  1. Выбираем контент ((aa)(aab)(aab)).
  2. Выносим (aa(...)(...b)(...b)).
  3. Объединяем (aa(...b...b)).
  4. Результат №9 (aa(bb)).

Действие оператора абстракции. Как видно из примера, для исходной строки ((aa)(aab)(aab)) существует девять различных вариантов вынести что-то за скобки и этим вариантам соответствуют девять результирующих строк. Так действует оператор абстракции, — перебирает все возможные варианты вынесения за скобки и строит соответствующее множество результирующих строк. Причем оператор абстракции ищет варианты вынесения не только в исходной строке, но, в том числе и во всех полученных результирующих строках. Иными словами оператор абстракции рекурсивно применяется к своим результатам, и так до тех пор пока не будут исчерпаны все возможные варианты. По очевидным причинам для любой конечной строки количество возможных вариантов вынесения тоже конечно.

Вернемся к предыдущему примеру. В рассмотренном примере я выписал не все возможные варианты, а лишь девять штук первого уровня. Чтобы проиллюстрировать полное действие оператора абстракции необходимо построить так же все варианты вынесения за скобки для каждого из девяти ранее полученных результатов. Выпишем все варианты, но уже в более сжатом виде.

Результат №1 (a(aab)(aab)):

1.1. (a(aab)(aab)) => (aa(aabb)).
1.2. (a(aab)(aab)) => (aaa(bb)).
1.3. (a(aab)(aab)) => (aab(aa)). *№7
1.4. (a(aab)(aab)) => (aaab).
1.5. (a(aab)(aab)) => (ab(aaaa)).
Результат №2 (a(b)(aab)):
2.1. (a(b)(aab)) => (ab(aa)).
Результат №3 (a(aa)(aabb)):
3.1. (a(aa)(aabb)) => (aa(aabb)). *№1.1
3.2. (a(aa)(aabb)) => (aaa(bb)). *№1.2
Результат №4 (aa(aa)(bb)).
Результат №5 (ab(aa)(aa)):
5.1. (ab(aa)(aa)) => (aab(aa)). *№7, *№1.3
5.2. (ab(aa)(aa)) => (aaab). *№1.4
Результат №6 (b(aa)(aaaa)):
6.1. (b(aa)(aaaa)) => (ab(aaaa)). *№1.5
6.2. (b(aa)(aaaa)) => (aab(aa)). *№7, *№1.3, *№5.1
Результат №7 (aab(aa)).
Результат №8 (a(aaabb)).
Результат №9 (aa(bb)).

Звездочкой отмечены варианты которые повторяются. В результат абстракции включаются только уникальные варианты. В разобранном примере есть четырнадцать уникальных результирующих строк. Итого:

abstraction[((aa)(aab)(aab))] =
{
(a(aab)(aab)), (aa(aabb)), (aaa(bb)), (aaab), (a(b)(aab)), (ab(aa)), (a(aa)(aabb)), (aa(aa)(bb)), (ab(aa)(aa)), (b(aa)(aaaa)), (ab(aaaa)), (aab(aa)), (a(aaabb)), (aa(bb))
}


Для большей ясности рассмотрим еще пару примеров.

Строка ((a(b))(a(b))). Варианты вынесения за скобки. Первая итерация:

((a(b))(a(b))) => (a((b)(b))), результат №1.
((a(b))(a(b))) => ((b)(aa)), результат №2.
((a(b))(a(b))) => (a(b)), результат №3.
В первом результате можно совершить еще одно вынесение. Вторая итерация:
(a((b)(b))) => (a(b)), результат №1.2 совпадает с результатом №3.

Итого: abstraction[((a(b))(a(b)))] = {(a((b)(b))), ((b)(aa)), (a(b))}

Большой пример:
abstraction[deduction[(a(b))]] = abstraction[((aa(bb)(bb))(aa(bb)(bb)))] =>
1. ( (aa(bb)(bb)) (aa(bb)(bb)) ) => ( (aab(b)) (aa(bb)(bb)) ).
1.1. ( (aab(b))(aa(bb)(bb)) ) => ( a(aab(b)(bb)(bb)) ).
1.1.1. ( a(aab(b)(bb)(bb)) ) => ( a(aabb(b)(bb)) ).
1.1.1.1. ( a(aabb(b)(bb)) ) => ( a(aabbb(b)) ).
1.1.2. ( a(aab(b)(bb)(bb)) ) => ( a(aabb(bb)) ).
1.1.3. ( a(aab(b)(bb)(bb)) ) => ( a(aabb(b)(bb)) ).
1.1.3.1. ( a(aabb(b)(bb)) ) => ( a(aabbb(b)) ).
1.1.4. ( a(aab(b)(bb)(bb)) ) => ( a(aabbb(b)) ).
1.2. ( (aab(b))(aa(bb)(bb)) ) => ( aa(b(b)(bb)(bb)) ).
1.2.1. ( aa(b(b)(bb)(bb)) ) => ( aa(bb(b)(bb)) ).
1.2.1.1. ( aa(bb(b)(bb)) ) => ( aa(bbb(b)) ).
1.2.2. ( aa(b(b)(bb)(bb)) ) => ( aa(bb(bb)) ).
1.2.3. ( aa(b(b)(bb)(bb)) ) => ( aa(bb(b)(bb)) ).
1.2.3.1. ( aa(bb(b)(bb)) ) => ( aa(bbb(b)) ).
1.2.4. ( aa(b(b)(bb)(bb)) ) => ( aa(bbb(b)) ).
1.3. ( (aab(b)) (aa(bb)(bb)) ) => ( (aab(b)) (aab(bb)) ).
1.3.1. ( (aab(b)) (aab(bb)) ) => ( a(aabb(b)(bb)) ).
1.3.1.1. ( a(aabb(b)(bb)) ) => ( a(aabbb(b)) ).
1.3.2. ( (aab(b)) (aab(bb)) ) => ( aa(bb(b)(bb)) ).
1.3.2.1. ( aa(bb(b)(bb)) ) => ( aa(bbb(b)) ).
1.3.3. ( (aab(b)) (aab(bb)) ) => ( aab((b)(bb)) ).
1.3.3.1. ( aab((b)(bb)) ) => ( aab(b(b)) ).
1.3.4. ( (aab(b)) (aab(bb)) ) => ( ab(aa(b)(bb)) ).
1.3.4.1. ( ab(aa(b)(bb)) ) => ( ab(aab(b)) ).
1.3.5. ( (aab(b)) (aab(bb)) ) => ( b(aaaa(b)(bb)) ).
1.3.5.1. ( b(aaaa(b)(bb)) ) => ( b(aaaab(b)) ).
1.4. ( (aab(b)) (aa(bb)(bb)) ) => ( (aab(b)) (aabb) ).
1.4.1. ( (aab(b)) (aabb) ) => ( a(aabbb(b)) ).
1.4.2. ( (aab(b)) (aabb) ) => ( aa(bbb(b)) ).
1.4.3. ( (aab(b)) (aabb) ) => ( aab(b(b)) ).
1.4.4. ( (aab(b)) (aabb) ) => ( ab(aab(b)) ).
1.4.5. ( (aab(b)) (aabb) ) => ( b(aaaab(b)) ).
2. ( (aa(bb)(bb)) (aa(bb)(bb)) ) => ( (aabb) (aa(bb)(bb)) ).
2.1. ( (aabb)(aa(bb)(bb)) ) => ( (aabb)(aab(bb)) ).
2.1.1. ( (aabb)(aab(bb)) ) => ( a(aabbb(bb)) ).
2.1.2. ( (aabb)(aab(bb)) ) => ( aa(bbb(bb)) ).
2.1.3. ( (aabb)(aab(bb)) ) => ( aab(b(bb)) ).
2.1.4. ( (aabb)(aab(bb)) ) => ( ab(aab(bb)) ).
2.1.5. ( (aabb)(aab(bb)) ) => ( b(aaaab(bb)) ).
2.2. ( (aabb)(aa(bb)(bb)) ) => ( (aabb)(aabb) ).
2.2.1. ( (aabb)(aabb) ) => ( a(aabbbb) ).
2.2.2. ( (aabb)(aabb) ) => ( aa(bbbb) ).
2.2.3. ( (aabb)(aabb) ) => ( aab(bb) ).
2.2.4. ( (aabb)(aabb) ) => ( abb(aa) ).
2.2.5. ( (aabb)(aabb) ) => ( aabb ).
2.2.6. ( (aabb)(aabb) ) => ( ab(aabb) ).
2.2.7. ( (aabb)(aabb) ) => ( b(aaaabb) ).
2.2.8. ( (aabb)(aabb) ) => ( bb(aaaa) ).
2.3. ( (aabb)(aa(bb)(bb)) ) => ( a(aabb(bb)(bb)) ).
2.3.1. ( a(aabb(bb)(bb)) ) => ( a(aabbb(bb)) ).
2.3.2. ( a(aabb(bb)(bb)) ) => ( a(aabbbb) ).
2.4. ( (aabb)(aa(bb)(bb)) ) => ( aa(bb(bb)(bb)) ).
2.4.1. ( aa(bb(bb)(bb)) ) => ( aa(bbb(bb)) ).
2.4.2. ( aa(bb(bb)(bb)) ) => ( aa(bbbb) ).
3. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( a(aa(bb)(bb)(bb)(bb)) ).
3.1. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aab(bb)(bb)(bb)) ).
3.1.1. ( a(aab(bb)(bb)(bb)) ) => ( a(aabb(bb)(bb)) ).
3.1.1.1. ( a(aabb(bb)(bb)) ) => ( a(aabbb(bb)) ).
3.1.1.2. ( a(aabb(bb)(bb)) ) => ( a(aabbbb) ).
3.1.2. ( a(aab(bb)(bb)(bb)) ) => ( a(aabb(bbb)) ).
3.1.3. ( a(aab(bb)(bb)(bb)) ) => ( a(aabbb(bb)) ).
3.1.4. ( a(aab(bb)(bb)(bb)) ) => ( a(aabbb) ).
3.2. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aabb(bb)(bb)) ).
3.2.1. ( a(aabb(bb)(bb)) ) => ( a(aabbb(bb)) ).
3.2.2. ( a(aabb(bb)(bb)) ) => ( a(aabbbb) ).
3.3. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aab(bbb)(bb)) ).
3.3.1. ( a(aab(bbb)(bb)) ) => ( a(aabb(bbb)) ).
3.3.2. ( a(aab(bbb)(bb)) ) => ( a(aabbb(b)) ).
3.4. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aab(bbbb)) ).
3.5. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aabb(bb)) ).
3.6. ( a(aa(bb)(bb)(bb)(bb)) ) => ( a(aabb) ).
4. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( aa((bb)(bb)(bb)(bb)) ).
4.1. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(b(bb)(bb)(bb)) ).
4.1.1. ( aa(b(bb)(bb)(bb)) ) => ( aa(bb(bb)(bb)) ).
4.1.1.1. ( aa(bb(bb)(bb)) ) => ( aa(bbb(bb)) ).
4.1.1.2. ( aa(bb(bb)(bb)) ) => ( aa(bbbb) ).
4.1.2. ( aa(b(bb)(bb)(bb)) ) => ( aa(bb(bbb)) ).
4.1.3. ( aa(b(bb)(bb)(bb)) ) => ( aa(bbb(bb)) ).
4.1.4. ( aa(b(bb)(bb)(bb)) ) => ( aa(bbb) ).
4.2. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(bb(bb)(bb)) ).
4.2.1. ( aa(bb(bb)(bb)) ) => ( aa(bbb(bb)) ).
4.2.2. ( aa(bb(bb)(bb)) ) => ( aa(bbbb) ).
4.3. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(b(bbb)(bb)) ).
4.3.1. ( aa(b(bbb)(bb)) ) => ( aa(bb(bbb)) ).
4.3.2. ( aa(b(bbb)(bb)) ) => ( aa(bbb(b)) ).
4.4. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(b(bbbb)) ).
4.5. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(bb(bb)) ).
4.6. ( aa((bb)(bb)(bb)(bb)) ) => ( aa(bb) ).
5. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( (bb)(aaaa(bb)(bb)) ).
5.1. ( (bb)(aaaa(bb)(bb)) ) => ( (bb)(aaaab(bb)) ).
5.1.1. ( (bb)(aaaab(bb)) ) => ( b(aaaab(bb)) ).
5.2. ( (bb)(aaaa(bb)(bb)) ) => ( (bb)(aaaabb) ).
5.2.1. ( (bb)(aaaabb) ) => ( b(aaaabb) ).
5.2.2. ( (bb)(aaaabb) ) => ( bb(aaaa) ).
6. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( (bb)(bb)(aaaa) ).
6.1. ( (bb)(bb)(aaaa) ) => ( b(bb)(aaaa) ).
6.2. ( (bb)(bb)(aaaa) ) => ( bb(aaaa) ).
7. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( a(bb)(aa(bb)(bb)) ).
7.1. ( a(bb)(aa(bb)(bb)) ) => ( a(bb)(aab(bb)) ).
7.1.1. ( a(bb)(aab(bb)) ) => ( ab(aab(bb)) ).
7.2. ( a(bb)(aa(bb)(bb)) ) => ( a(bb)(aabb) ).
7.2.1. ( a(bb)(aabb) ) => ( ab(aabb) ).
7.2.2. ( a(bb)(aabb) ) => ( abb(aa) ).
8. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( aa(bb)((bb)(bb)) ).
8.1. ( aa(bb) ((bb)(bb)) ) => ( aa(bb)(b(bb)) ).
8.1.1. ( aa(bb)(b(bb)) ) => ( aab(b(bb)) ).
8.2. ( aa(bb) ((bb)(bb)) ) => ( aa(bb)(bb) ).
8.2.1. ( aa(bb)(bb) ) => ( aab(bb) ).
8.2.2. ( aa(bb)(bb) ) => ( aabb ).
9. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( a(bb)(bb)(aa) ).
9.1. ( a(aa)(bb)(bb) ) => ( ab(aa)(bb) ).
9.2. ( a(aa)(bb)(bb) ) => ( abb(aa) ).
10. ( (aa(bb)(bb))(aa(bb)(bb)) ) => ( a(bb)(bb) ).
10.1. ( a(bb)(bb) ) => ( ab(bb) ).
10.2. ( a(bb)(bb) ) => ( abb ).

Из представленного выше списка результирующих(справа от стрелки) строк нужно выбрать все уникальные, и это множество уникальных строк будет результатом работы abstraction[((aa(bb)(bb))(aa(bb)(bb)))]. Выписывать уникальные строки не стану, так как это ничего не добавит объяснению. Ниже, при рассмотрении вопроса оптимизации и практического использования алгоритма, я буду ссылаться на этот пример.


Оператор композиции. Определение. ∀U ⊂ S, U ≠ ∅, composition[U] ≠ ∅, composition[U] ∈ S. На вход принимает множество строк, а возвращает одну строку. Действие. Оператор готовит контент для следующей итерации алгоритма. После действия оператора абстракции появляется множество строк, а на стадии композиции происходит отбор и конкатенация строк для следующей итерации алгоритма. Более подробно я рассмотрю этот вопрос в разделах оптимизации и практического использования. В простейшем случае оператор композиции осуществляет простую конкатенацию всех результатов абстракции. Так его и определим. Пример: composition[abstraction[((a(b))(a(b)))]] = composition[{(a((b)(b))), ((b)(aa)), (a(b))}] = ((a((b)(b)))((b)(aa))(a(b))).

Свойства алгоритма


Алгоритм производит строки. Множество всех строк которые образуются в результате итеративной работы алгоритма буду называть “вывод алгоритма” или просто “вывод”. Определение вывода. Ts ≝ {tn|tn+1 = composition[abstraction[deduction[tn]]]; t0 = s; tn, s ∈ S; n ∈ N}. Ts — вывод для затравки s. В тех случаях когда T без параметра, речь идет о выводе безотносительно затравки. Свойство вывода: ∀s, e ∈ S, s ≠ ∅, e ≠ ∅, s ≠ e, TsTe = ∅. Это значит, что каждый элемент вывода уникально соответствует затравке. Как следствие, для каждой затравки вывод уникален.

Содержательная интерпретация дедукции и абстракции. Физический смысл оператора дедукции заключается в следующем. Из исходной строки, универсальным способом, оператор дедукции создает принципиально новый в конструктивном отношении объект, с принципиально новыми и более сложными внутренними свойствами. В интуитивном приближении можно сказать, что дедукция добавляет качественно новую информацию. В свою очередь оператор абстракции разбирает новый объект на запчасти и таким образом в конструктивном эквиваленте выражает информацию добавленную на стадии дедукции. Можно заметить, что в результате процедуры вынесения за скобки происходит потеря информации. Причем для данного синтаксиса, вынесение за скобки — это универсальный способ осмысленно потерять информацию в отсутствии каких-либо априорных данных о значении строк. То есть с точки зрения алгоритма все возможные варианты потери информации, которые вычисляются на этапе абстракции, собственно, и являются значением строк. Таким образом, на каждом шаге алгоритм создает новую, уникальную синтаксическую эвристику. И каждая следующая эвристика является принципиально более сложной и более содержательной чем предыдущая. На каждой итерации алгоритма появляется новое знание.

Практическое применение


Алгоритм является “вещью в себе”. Он мыслит, но это мышление “инопланетянина”. Чтобы иметь практическую пользу от инопланетного мышления необходимо найти с ним общий язык. С одной стороны требуется обучить инопланетянина, а с другой — научиться его понимать, чтобы в конечном итоге наладить осмысленную коммуникацию. В целом парадигма взаимодействия с алгоритмом похожа на известные принципы взаимодействия с “черным ящиком”. Далее, для большего удобства, алгоритм мышления буду называть инопланетянин Коля.

Рассмотрим идеальный случай. Предположим, что в нашем распоряжении имеется неограниченная вычислительная мощность и можно себе позволить вычислять любое количество итераций мышления Коли не заботясь о вопросах оптимизации. В таком случае, для взаимодействия с Колей потребуются следующие ингредиенты:

  1. Цифровая модель интерактивной среды смысл активности которой известен.
  2. Цифровая модель инструмента которым можно воздействовать на среду.
  3. Кодирующий алгоритм, чтобы кодировать сигналы от среды строками из S.
  4. Декодирующий алгоритм, который будет каким-то нечетким, но рационально обоснованным образом декодировать ранее неизвестные строки из S и преобразовывать их в сигналы для инструмента.

Имея такие компоненты можно организовать универсальную схему обучения с неизвестной мотивацией, что позволит адаптировать мышление Коли к среде. Ниже псевдокод.

S NextThought(S prevThought, S ExternalSignal, int exposure = 1)
{
   S t = composition[prevThought, ExternalSignal];
   for (int i = 0; i < exposure; i++)
      t = composition[abstraction[deduction[t]]];
   return t;
}

EnvironmentModel e;
S s = encode(e.GetState());
S o = ∅;
while (0)
{
   S o = NextThought(o, s);
   e.ImpactTool.perform(decode(o));
   s = encode(e.GetState());
}

Схема с обратной связью. В начале у Коли нет мыслей. Первая мысль Коли — это закодированное исходное состояние среды. На каждой итерации в мысли Коли заливается внешний сигнал. После чего Коля думает в течение времени экспозиции. Результаты думания декодируются и отправляются в инструмент. В свою очередь, действие инструмента как-то изменяет состояние среды. И все повторяется снова. В течение какого-то времени мышление Коли адаптируется к среде и он начнет проявлять признаки высокоорганизованного, субъективно мотивированного поведения. Однако мотивация Коли останется неизвестной. Для того чтобы понять его мотивацию, на следующем этапе обучения необходимо ставить эксперименты, то есть целенаправленно изменять среду и изучать реакции Коли на изменения. Если получится описать желательное внешнее поведение Коли в терминах некоторой целевой функции, тогда процесс обучения можно автоматизировать, например, при помощи генетического алгоритма.

Проблема декодирования. Необходимо декодировать мысли Коли с целью синтеза сигнала для инструмента. Трудность состоит в том, что каждая мысль, как я уже отмечал в предыдущем разделе, представляет собой принципиально новую конструкцию. То есть гипотетический исследователь никогда не сможет полностью разобраться в содержании мыслей Коли. Часть контента производимого мышлением Коли, сколько бы его не изучать, навсегда останется чем-то совершенно неясным. Осмысленно распознать можно только некоторые, наиболее высокоорганизованные фрагменты мышления, и это принципиальное и непреодолимое ограничение в коммуникации с Колей. Но в практическом отношении это ограничение не принципиально. Поскольку, во-первых, можно неограниченно уточнять содержательную сторону мыслей Коли, а во-вторых, нет нужды исчерпывающе понимать Колю. Достаточно выработать общий язык в пределах которого можно объясниться по практическим вопросам. С технической стороны ситуация выглядит следующим образом. Входящий сигнал с описанием состояния среды закодирован на некотором языке. Слова и утверждения языка являются строками из S. Язык имеет свою лексику, синтаксис и семантику. Контент с каждой итерации мышления по грамматическим критериям будет делиться на несколько категорий:

1. Фрагменты с неизвестной лексикой.
2. Неизвестный синтаксис.
3. Неизвестная семантика.
4. Грамматически и семантически корректные фрагменты.

Контент всех указанных категорий по способу возникновения произволен. То есть даже в случае грамматически верных фрагментов — это случайность и неизвестно какой смысл вкладывает в них Коля, поскольку его внутренний смысл доступен только ему самому. Априори нет критериев чтобы правильно связать мысли Коли и соответствующие действия инструмента. И в этом вопросе остается полагаться исключительно на самого Колю. Его поведение произвольно и только он сам может осмыслить свою мотивацию по мере того как степень организации его мышления будет возрастать. В таком случае, любая рациональная схема реагирования на мысли Коли будет приемлема и продуктивна, вопрос лишь в относительной эффективности различных схем. Базовый вариант — реагировать на все грамматически верные фрагменты даже если они абсурдны по содержанию. В общем, все что можно преобразовать в термины исходной кодировки, необходимо преобразовывать и реагировать. И так до тех пор пока Коля не “поумнеет” до осмысленных реакций. И разумеется будет полезной как можно более пластичная модель среды с большим количеством степеней свободы. Среда, в некотором роде, станет телом Коли.

Проблема ограниченной вычислительной мощности. С точки зрения объема вычислений алгоритм является тяжелым. Наглядно — несколько десятков итераций исчерпают всю вычислительную мощность планеты. Можно надеяться на квантовые устройства и на то что найдется квантовый аналог алгоритма, но пока этого не произошло выход только один: вместо одной колоссально сложной мысли, параллельно думать много маленьких и простых мыслей. Для этого есть несколько технических трюков:

1. На этапе композиции необязательно включать в результат все множество абстракции. Для того чтобы алгоритм сохранил свои принципиальные свойства достаточно выбрать из множества только две независимые результирующие строки. Критерием независимости является ненулевая разница первых цифр в иерархической нумерации результатов абстракции. Обратимся к большому примеру, который выше под спойлером. Все строки занумерованы по принципу a.b.c.d... Пара строк с индексами a1.b1.c1.d1..., a2.b2.c2.d2... называется независимой, если a1 ≠ a2. А это значит, что есть возможность разбить весь результат абстракции на независимые пары и для каждой пары на следующем шаге запустить свою вычислительную ветку. Более того, нет необходимости использовать все результаты абстракции. В минимальном случае можно выбрать только одну пару строк, а все остальные отбросить(безвозвратно потерять) и все принципы мышления сохранятся. Учитывая возможность терять результаты, можно организовать дополнительный этап селекции, на котором, некоторым рациональным образом, например, по статистической значимости, проводить отбор контента для дальнейших вычислений.

2. Второй трюк основан на том предположении, что чем более глубоко расположены скобки в строке тем менее организованный контент они содержат. Соответственно, контент “всплывающий вверх” в результате вынесения за скобки является более организованным и абстрактным с точки зрения внутренних смыслов Коли, а значит глубокие уровни вложенности можно удалить. Тем самым объем вычислений на следующей итерации экспоненциально сокращается. В интуитивном понимании эта процедура позволяет аппроксимировать только самую абстрактную часть мышления.

3. В результате распараллеливания на множество более мелких веток, вычисления будут разрастаться “в ширину”. Эту ширину можно абсолютно ограничить селекцией не только на уровне отдельных вычислительных веток, но и целиком во всем массиве параллельных веток. Это можно сделать через общий пул фиксированного размера откуда каждая ветка будет черпать строки для следующей итерации, и, соответственно, куда будет сбрасывать результаты. А для строк можно абсолютно ограничить допустимый уровень вложенности скобок. Такой комбинированный подход позволит сдерживать и регулировать рост объема вычислений.

Интерпретация и комментарии


Доказательства. Доказательств нет и быть не может. Любая теория мышления это вопрос определения. Представленный алгоритм является конструктивной теорией мышления. И потому он — аксиома. Алгоритм мышления аподиктически узнаваем для субъекта мышления. Узнавание можно облегчить прибегнув сначала к неконструктивной аксиоматике которая более интуитивна, а после обнаружить совпадение свойств конструктивного и неконструктивного определений.

Неконструктивное определение мышления. Мышление — это не алгоритмическое производство контента. В интуитивном понимании неалгоритмические явления имеют следующие специфические признаки: независимость, спонтанность, уникальность, самоорганизация, произвольность, субъективность, сложность, принципиальная непредсказуемость и неопределенность, отсутствие концептуальных барьеров и в самом широком смысле — неотъемлемая и непреходящая возможность принципиальной новизны. Все перечисленные признаки так или иначе присущи описанному алгоритму мышления. Хотя сочетание алгоритма и неалгоритмических свойств является чем-то не интуитивным и на первый взгляд противоречивым, на самом деле противоречия нет. Алгоритм развертывает контент при помощи вполне определенных алгоритмических процедур, но в процессе развертывания контент имеет не алгоритмическую организацию. С учетом конструкционной специфики алгоритма, неалгоритмические свойства в организации контента проистекают из собственных, внутренних, неалгоритмических свойств самого контента.

Дополнительные точки зрения на алгоритм. Алгоритм мышления это, в том числе:

1. Конструктивная реализация метафоры. Мышление по-существу метафорично. Нет других смыслов кроме переносных(возможных). Однако в переносном смысле возможны буквальные смыслы(алгоритмы).
2. Модель самоорганизации абсолютного хаоса. Модель концептуальной спонтанности.
3. Модель абсолютно независимого, субъективно мотивированного поведения. Модель творчества.
4. Самоорганизующийся язык.
5. Модель конструктивной аппроксимации, для неконструктивной, чисто возможной семантики.

Сознание. Вопрос сознания тоже решается на уровне определения. Сознание — это то что лежит за пределами любых концептуальных ограничений. В свете такого определения, о сознании можно лишь травить более или менее сложные байки, каждая из которых будет отражать какие-то возможности сознания, но ни одна из них не будет правдой. Вместе с тем, байки про сознание имеют различный эвристический потенциал. Из всех баек полезнее те которые сложнее. С точки зрения алгоритмов, сознание — это транс-алгоритмический, бесконечно сложный(или просто — сложный) объект. Байку о сознании можно записать при помощи алгоритма. Она звучит так:

limn→∞[tn+1 = composition[abstraction[deduction[tn]]]]; t0 = s; tn, s ∈ S; n ∈ N
Поделиться публикацией

Комментарии 88

    +1
    А какой-то работающий прототип уже есть? Чтоб выдавал не только ряды скобок разной вложенности, но и что-то осмысленное?
    Или это все пока теория, построенная на допущении, что смысл можно найти в любом наборе символов?
    +4
    И демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием.

    Вы забыли упомянуть: в рамках вашего определения "думать по-настоящему" и "настоящего сознания". Что, как бы, резко уменьшает ценность вашего утверждения для стороннего наблюдателя.

      0
      В преамбуле я заметил, что это «мой ответ на вопрос». Жаль, что вы разочарованы.
        0

        Ваш ответ на ваш вопрос. Потому что мой вопрос "как работает мышление" опирается на мое определение мышления, а не на ваше. Поэтому ваш ответ к моему вопросу никак не подходит.

          0
          Просто поделитесь своим определением, может быть мы найдем общий язык.
            +1
              –6
              Это не ваше определение а ссылка на википедию. Спорить научились бы что ли.
                +2

                А что мешает мне использовать определение из википедии как свое?

      +1
      Назад к Lisp?
        0
        Нет. А в чем Вы увидели связь с лисп?
          +1
          Просто изначально он разрабатывался как язык ИИ для обработки символьной (семантической) информации.
            0
            Лисп — лист процессор.
        +7
        Если это шутка, то интересно. Если всерьёз, то грустно.
          0
          Почему грустно?
            +6
            Потому что вы не понимаете, почему грустно.
              0
              Могу предложить, не обращать внимание на мое определение мышления. Посмотрите на алгоритм как на генератор истинно случайных строк.
                +5
                Затрудняюсь. Неясно, как детерминированный алгоритм может генерировать истинно случайные строки. Если посмотреть как на генератор псевдослучайных строк — очень плохой генератор, очень низкая энтропия.
                  0
                  Хорошо. Есть еще вариант — посмотреть как на любопытный, алгоритмический курьёз из области самоорганизующихся алгоритмов.
                    +1
                    Прежде чем рассматривать это как «самоорганизующийся алгоритм», неплохо бы доказать/показать факт наличия какой-то самоорганизации. Вы этого не сделали, и я в принципе в ней сильно сомневаюсь. У вас просто странная функция, итеративно применяющаяся к строке. Чем она принципиально отличается от чего-нибудь типа:

                    s = md5(s) + s + sha1(s)
                    — совершенно непонятно. У вас есть на этот счёт какие-то очень мутные философские объяснения, которые человека с математическим образованием вообще ни в чём не убеждают.
                      +1
                      Сейчас не могу убедительно ответить. Подумаю над хорошим и более обстоятельным объяснением.
          +3
          Ниже псевдокод

          Зачем псевдокод? Напишите на каком либо реальном языке программирования и продемонстрируйте что получилось, хотя-бы что-нибудь. Просто поймите правильно — всяких изобретателей вечных двигателей, ИИ и подобного — пруд пруди. Не будешь же вникать в идеи каждого из десятков тысяч. Когда есть работающий прототип — можно и глянуть.
            –1
            Согласен, без прототипа ценность моего текста значительно ниже чем с прототипом, однако, она не нулевая, особенно с учётом дефицита принципиально новых, конструктивных идей. Я работаю над проблемой, когда будет работающий прототип, поделюсь.
            +3
            Это опять, небось, из песочницы вывалилось после того, как всем дали отмашку «можно»?
            самодельном математизированном формализме
            дальше можно не читать. Чем вызвано это действо? Непригодностью иных формализмов — в чём? Или просто отсутствием знаний в области, в которой собрался открытия делать?

            Не говоря уж о том, что «алгоритмический разум» — это сужение задачи до потери смысла её вообще решать.
              0
              Речь как раз идет о разуме неалгоритмическом.
                +2
                Значит, Вы не умеете выражать мысли вообще:
                В этой статье изложен алгоритм мышления и сознания.
                демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием.
                Описание алгоритма

                Изучать содержимое при этом не имеет ни малейшего смысла. Вернитесь в песочницу, там ведь сухо.
                  –1
                  Спасибо за критику. Я хотел промокнуть.
              +2
              Хотел закритиковать, но не нашел к чему придраться. Формально всё правильно. Но…
              1) Есть ли такая мысль, на которой Коля забуксует в вечном цикле? Имею ввиду цепочку дедукций и абстракций, которая циклически повторяется.
              2) Как быть с рекурсивными мыслями о мыслях? Как Коля выйдет из бесконечной рекурсии? Аргумент, что абстракция сокращает строчки не вариант. Если коротко, то мое возражение связано с Геделем. Может ли Коля найти строчку, утверждающую собственную невыводимость? По определению это невозможно (хотя с помощью сверххитрых трюков такую строчку можно найти формально, но это отдельная тема). Допустим, Коля находит такую строчку. Что дальше? Добавляет новый символ `с`? Даже если реализовать такую возможность, то появится еще одна строчка, говорящая о собственной невыводимости. Это продолжается бесконечно. А значит с конечной скоростью мышления Коля просто зациклится.
              3) Может ли Коля придумать мета-Колю в своих мыслях и отслеживать его состояние?

              Вообще я знаю ответы на вопросы (кроме первого), но это настолько глубокая тема, что совсем не подходит для раздела комментариев.
                0
                > Вообще я знаю ответы на вопросы

                Тогда может быть вы знаете и чем именно отличается человек от алгоритма, почему на первого не распространяются алгоритмические ограничения?

                (Меня интересует этот вопрос, подумал — удобный случай спросить.)
                  0
                  Обширная тема, но если коротко то:
                  1) Человек аналоговый, его невозможно на 100% аккуратно просчитать в цифровом виде.
                  2) Но это и не нужно. Нужно просто достаточно высокая точность и человека можно достоверно воспроизвести в цифровом виде.
                  3) На мышление как раз распространяются все алгоритмические ограничения.
                  4) Чтобы алгоритм повторял мышление человека нужны некоторые хитрые трюки. Какие именно — напишу статью.
                    0
                    Спасибо. Убеждён, что статья, буде вы её напишете, будет стоящей.
                      0
                      Насчет первого пункта. Его невозможно просчитать из-за хаоса, вызванного природой биологических компьютеров, коими, вне всякого сомнения, и являются человеческие мозги. Когда эмоции, реакции психики и прочая зависят от тысяч поступающих извне переменных, очень тяжело не быть «живым». Молекула вещества может поступить, и человек будет в хорошем настроении, а может и не поступить, и человек будет в подавленном настроении. Это очень упрощенно.

                      Если смоделировать весь этот хаос применительно к компьютеру, он будет вести себя гораздо более живо, нежели его цифровые собратья с детерминированным списком возможных состояний.
                        0
                        Ну возьмите модель Рикера при r > 2.692. Или какой хаос вы имели ввиду? И кстати, почему вы оттождествляете сознательность и живость?
                    –1
                    По первому пункту ситуация такая. Вся суть алгоритма в том, что на каждом шаге он производит новый уникальный идентификатор(этот вопрос можно строго формализовать, но это громоздко для комментария). Так что ответ — нет, если соблюдать условие уникальности, то есть, на стадии композиции включать пару независимых результатов абстракции, или просто все что есть. Но при этом, внутри строк может происходить все что угодно, в том числе и разного рода циклы. На счет теорем Гёделя — не вижу каким образом их можно тут применить, поскольку они сформулированы для другого предмета, и их предмет в корне отличается от моего алгоритма. Ну и третий пункт — я не знаю, но в мышлении может быть все что угодно, если согласиться, что оно представляет собой неалгоритмическое производство контента.
                      +1
                      Хм, этот пункт не был очевидным для меня. Я посчитал, что абстрагирование сокращает строчку с потерей информацией, что может привести к получению уже существовавшей строчки. Мне необходимо строгое доказательство этого замечания.
                      И если всё же это правда, то ваш Коля не что иное, как n = n+1. Или метод Кантора, если пожелаете. В таком случае всё печально, т.к. полученные строчки не могут ничего делать. Всё что ваше творение делает, это алгоритмически перечисляет элементы некоторого множества, что интеллектом назвать невозможно.
                        +1
                        Да, это самый важный пункт. Если в системе нет сокращающих операций, то такая система не может в арифметику.
                          0
                          Операция вынесения за скобки происходит с потерей информации. То есть по одному какому-то элементу из множества абстракции операция абстракции необратима. Но по паре независимых элементов она однозначно обратима. Да, алгоритм перечисляет элементы некоторого множества, причем как каждый отдельный элемент, так и все множество целиком, уникально соответствуют стартовой затравке. Но я не могу понять почему Вы считаете, что это противоречит принципам мышления. Грубо говоря, алгоритм создает уникальный язык с бесконечно сложной (по моему мнению) семантикой.
                            0
                            подумайте как коля найдет X = 2 — 1 и вы всё сами узнаете
                      +5
                      Краткое содержание, как я его понял:
                      1. Давайте заставим компьютер страдать шизофазией.
                      2. Пусть эта шизофазия будет напоминать логику предикатов*.
                      3. А еще сделаем систему**, которая устроит взаимодействие этой шизофазии с какой-то средой.
                      4. ???
                      5. profit!
                      6. Ой, стоп. Оно же, наверно, выдаст «42» в бесконечномерном варианте. Так что надо будет еще понять, как это понимать.
                      7. Но вы согласны, что сама идея заставить компьютер страдать комбинаторной шизофазией — топовая?

                      * «Но вникать в логику предикатов, и даже просто прочитать главу про диагонализацию из какого-нибудь учебника по логике мне было лень, поэтому я выдумаю свое, как уж выдумается».
                      ** К чести автора, он честно признается, что понятия не имеет, как должна быть устроена эта система.

                      А если серьезно, то страньше всего вот что: вы, вроде бы, пытаетесь играть в строгую запись, основанную на некоторой аксиоматике. При этом на всем протяжении статьи (десятки раз!), демонстрируете, что пользоваться строгой записью по каким-либо правилам не очень умеете (грамматической аксиоматикой русского языка, особенно в части расстановки обязательных запятых).
                        0
                        Прошу прощения за русский язык. Я основательно корпел над грамматикой и пунктуацией. Есть несколько ошибок которые допущены умышленно, например, это касается слова «неалгоритмический», а так же склонений слова «мнемоника». Я склонен перегружать текст пунктуацией в художественных целях, и первая версия текста тоже грешила этим недостатком, но после того как на это обратили мое внимание, я максимально разгрузил текст от запятых чтобы он бегло читался. В следующий раз напишу лучше. По поводу логики предикатов и шизофазии, мне сложно понять как это относится к описанному алгоритму. В любом случае, я не желал Вас расстроить. Спасибо, что прочли мою статью.
                          +2
                          В том-то и дело, что никакого «описанного алгоритма» в статье не видно. Есть процедура генерации одного множества из другого, плюс вера в то, что если эту генерацию зациклить, в этом самозародится Коля.

                          «Как известно, если открытый кувшин набить нижним бельём, загрязнённым потом, добавить туда пшеницы, и выждать три недели, то там появится мышь, — поскольку закваска, находившаяся в белье, проникает через пшеничную шелуху и превращает пшеницу в мышь».
                            0
                            От самого зарождения этой идеи я пытаюсь ее разгромить, но не могу. Как мне понять, что я ошибаюсь?
                              0
                              вспомните китайскую комнату, и поищите (минимальный/любой) контрпример — (малейшую/любую) мысль, которая не зародится у вашего Коли.
                              мысль «я — Коля» у вас как устроена?
                              мысль «я — не Коля»?
                              а мысль «Коля — не Коля»?
                              а мысль «если Коля умный, то я не Коля»?
                              а мысль «Коля — друг Васи»?
                              а мысль «2.3 * 2 = pi»?
                              если же у вас всё строится — и константы, и предикаты, и функции, то вы построили классическую логику, просто закодировав её своей функцией перечисления.
                              Но к проблеме мышления вы не приблизились, потому что вы по-прежнему не умеете генерировать выбирать правильные ответы на заданные вопросы даже в 1% случаев, а это именно то, что позволяет нам делать мышление.
                                0
                                Я не знаю какие мысли зародятся у Коли, просто потому, что его мышление абсолютно независимо и субъективно. По этой же причине невозможно знать как именно устроены какие-то конкретные его мысли.

                                Мышление не сводится к задаче выбора. Для мышления не требуется классификация вещей на истинные или не истинные.
                                  0
                                  А я вот вполне могу знать, какие мысли зародятся у Коли, если придумаю интерпретацию для вашей модели.
                                  Если вы не знаете этого — что ж, значит, вы не понимаете, что вы сделали.
                                  А вы сделали просто чёрный ящик и сказали, что у него внутри неонка, поэтому он мыслит и существует.
                                  Почитайте вот на досуге: lurkmore.to/У_ней_внутре_неонка
                        0
                        Очень странная у вас алгебра получилась, и «сложная» для синергетики.
                        Напоминает L-системы и генетические алгоритмы.
                        И для «сознания и творчества» обязательно необходимо чтобы образовывались бифуркации и эмерджетность системы. Тут этого не видно.
                        Попробую написать прототип, функциональный язык для этого самое то.
                          +1
                          Это зависит от интерпретации.
                          Не произвольное натягивание совы на глобус, а последовательное соответствие (биекция) элементов у двух систем. Строчка (или подстрочка) может означать определенное действие, которое двигает инструментом, или переводится на русский язык, или является состоянием мета-системы.
                            0
                            С моей точки зрения, бифуркации, если их понимать как спонтанный переход в качественно новое состояние, происходят на каждом шаге алгоритма.
                            0
                            Трагически не хватает тега философия
                              0
                              Да, это стык дисциплин. Такова специфика темы.
                              0
                              ...
                              while (0)
                              {
                              S o = NextThought(o, s);
                              ...

                              Вероятно, надо убрать 'S', т. к. 'o' — это одна и та же переменная, а условие цикла заменить на '1'.
                              0
                              deduction[((a)(b(cc)))] = (((aa)(aa)(bb(cccc)(cccc))(bb(cccc)(cccc)))((aa)(aa)(bb(cccc)(cccc))(bb(cccc)(cccc))))

                              и потом из этого получаем здоровенный букет абстракций и наконец конкатенируем их. Ну хорошо, не все их, только две независимые, хрен редьки не слаще

                              Чую, расти строка «мысли» будет страшно. Возможно, если выбирать для композиции две кратчайшие независимые строки, можно притормозить это, по-крайней мере первые пару-тройку итераций, но дальше же кол-во требуемых на итерацию вычислений будет расти так, что очень скоро никакой памяти не хватит
                                0
                                Да, это трудная проблема. Основа решения заключается в том, чтобы вырезать глубокие скобки, просто выбрасывать их, полагая, что там низкоорганизованный шум и оставлять такую глубину скобок которую реально можно обработать. Оставшийся, неглубокий контент содержит «всплывший», в результате абстракций материал, это так сказать «вменяемая» высокоорганизованная часть. Можно ограничивать и поддерживать длину строк в некотором коридоре. Но у этого подхода тоже не все гладко. Собственно текущая проблема которую я решаю это стратегия селекции — что именно и по каким признакам выбрасывать, а что оставлять. Пока нет хорошего решения, но я думаю что найдется.
                                0
                                сделайте пример про секс, алкоголь и деньги, а то непонятно :):):)
                                  0
                                  секс к мышлению отношения не имеет — достаточно примитивная форма поведения, хоть и управляется мозгом и эндокринной системой.
                                    0
                                    ну вот какое-то суждение вы уже выдали, — можно его записать в предложенной форме?
                                  0
                                  Прошу простить мою малограмотность, но нельзя ли как-то попроще о сути статьи?
                                  Или намекните кто-нибудь, что нужно почитать, чтобы понять о чём речь.

                                  p.s. Не первый год слежу за тем, в каком направлении движутся работы на ИИ. Пока моё мнение дилетанта таково: полноценного ИИ не будет, т.к. его никто не делает.
                                    0
                                    Я попробую начать объяснение. Во-первых, я считаю, что мышление продуктивно, то есть это процесс производства некоторого содержания, и если нет производства содержания то нет и мышления. А общепринятое мнение заключается в том, что мышление рефлективно, то есть оно лишь отражает некоторую внутреннюю логику реальных предметов. Я не могу согласиться с этим. Мышление создает логику. Это ключевая, исходная посылка. Во-вторых, у мышления есть специфический признак — контент и его логика создаются неким не алгоритмическим путем, то есть не посредством вывода одних концепций из других. Каким-то образом мышление перешагивает кажущуюся необходимость вывода. То есть концепции в мышлении возникают спонтанно. Фактически я утверждаю, что мышление это внутренне независимый хаос, но такой хаос, который может иметь различную организацию, и в частности, различную сложность. Поток мышления это истинно случайное, независимое, возникновение концепций. То что мы называем рациональностью и логичностью, это так представляется свойства созданного контента уже задним числом. По-сути, мышление, в некотором абсолютном смысле, бессодержательно, то есть нет никаких априори и буквально заданных рамок, смыслов, законов и так далее, есть лишь возможные смыслы которые развертываются в потоке спонтанно возникающих концепций. Короче говоря, мышление, это самоорганизующийся хаос содержания, который в своей, постфактум, организации может быть сколь угодно сложным, и постфактум в нем можно находить логику. Это опорные принципы теории. Дальше вопрос в том, возможна ли вычислительная процедура которая смоделирует такой процесс. Резонно предположить, что возможна. Кажется, что это парадокс — процедура которая создаст спонтанность, и самоорганизующийся хаос. Но на самом деле, у истинного хаоса, буде он реально существует, нет никаких принципиальных препятствий к тому, чтобы в том числе, иметь алгоритмическое выражение. Дальше вопрос в том, чтобы отыскать такой алгоритм. И именно такой алгоритм я демонстрирую в статье.
                                      0
                                      А как вы понимаете самоорганизуемость? Например, система из матрешки и пола, на котором она стоит, можно назвать самоорганизующейся? Вроде все сводится к критерию организованности или упорядоченности. Но вот если передо мной нечто далекое и непонятное, навроде этого Коли, как я могу судить о его упорядоченности?
                                        0
                                        Самоорганизацию понимаю как способность независимо и принципиально изменять собственные свойства и собственную конструкцию, без ограничений. На мой взгляд, самоорганизация и упорядоченность не имеют прямой связи, последняя это частный случай свойств. Матрешка и пол это не процесс, во всяком случае на таком уровне абстракции, так что нет, это система без самоорганизации.
                                          0
                                          Гм. Ну хорошо, а граница независимости где проведена? Вот можно, скажем, выдумать мудреный алгоритм генерации чего-то и на вход ему ввинтить квантовый генератор случайных чисел.
                                          Но еще интересней следующее. Что это за собственные свойства и собственная конструкция? Есть ли что-то, что гарантирует их однозначность?
                                            0
                                            По поводу мудреного алгоритма. Во-первых, может быть можно его придумать, а может быть и нельзя. Сам по себе факт наличия квантового генератора случайных чисел не гарантирует что можно. Во-вторых, хоть я очень поверхностно разбираюсь в устройстве квантовых генераторов, по-моему речь идет о стационарном распределении вероятностей, тогда как процесс с самоорганизацией по определению нестационарный. Так что если мудреный алгоритм все же выдумать, то самоорганизация будет его собственным свойством, а не свойством зависящим от генератора.

                                            По поводу собственных свойств. Здесь я обращусь к конструкции моего алгоритма. Динамические свойства вывода у моего алгоритма, если не добавлять внешний сигнал, зависят исключительно от затравки. Система замкнута. Весь конструкционный материал итеративно развертывается из затравки, и в этом смысле у процесса есть собственные внутренние свойства. Для затравок с различной структурой, выводы различны.
                                    +1
                                    Нет тут про сознание, только про алгоритмы. И кстати не описан набор аксиом теории множеств в которых делается вывод.
                                      0
                                      Почему Вы считаете, что «нет тут про сознание»? Какие Вы ищете маркеры сознания?
                                      0
                                      Псевдонаучная пурга :)
                                        0
                                        У меня нет претензий на научность. Я делюсь алгоритмом и своим пониманием того, что значит этот алгоритм и не более.
                                          +1
                                          При всем… уважении, не могу не ответить. В том-то и дело, я не вижу «вашего понимания». Не в смысле, что вы не понимаете, что творите, а — непонятно, что вы имеете ввиду. Вы говорите:

                                          Я предлагаю свой ответ на вопрос о том как работает мышление и сознание. И демонстрирую алгоритм, который умеет по-настоящему, творчески, думать и обладает настоящим сознанием.

                                          Вычисление этой функции есть мышление.


                                          При этом, нигде не пытаетесь раскрыть главный тезис. Что такое мышление в рамках вашей концепции? Что такое сознание в рамках вашей концепции? Почему вы смешали эти два разных (!) понятия и какая связь между мышлением и сознанием в описываемой концепции? Какое отношение ваш алгоритм имеет к сознанию? Почему вообще алгоритм может обладать сознанием (дичь какая-то, честно говоря)? Какое отношение ваш алгоритм имеет отношению к мышлению? И почему мышление — это результат работы алгоритма, пусть и алгоритма-обладающего-сознанием?

                                          Далее идет описание абстрактного алгоритма, того как он работает, будучи «вещью в себе». Но в то и дело, что смысла в разборе алгоритма — нуль. Если заменить имена переменных на не имеющие к предметной области буквы или слова, то к предметной области приведенный вами алгоритм уже не относится.

                                          Таким образом, я вижу просто описание непонятного алгоритма, алгоритмом не являющимся. Описание некорректное, так как оно не формализовано (вы сами в комментариях отмазываетесь, что математика и научность — не про этот пост).

                                          Далее немного ваших же комментариев:

                                          От самого зарождения этой идеи я пытаюсь ее разгромить, но не могу. Как мне понять, что я ошибаюсь?


                                          Нет в статье идеи, поэтому и опровергать / громить нечего. Есть абстрактный алгоритм, никакого отношения к мышлению и сознанию не имеющий. Если имеет — так раскройте это, а пока что статья — это просто набор букв.

                                          Почему Вы считаете, что «нет тут про сознание»? Какие Вы ищете маркеры сознания?

                                          Вы малость… офигели, мне кажется. Бремя доказательства всегда лежит на докладчике. Если не умеете выражать свои мысли — при чем тут респондент? См. выше.

                                          Я попробую начать объяснение.
                                          (и далее по тексту)

                                          Чисто физически нельзя пробовать начинать, можно только начинать объяснение. Или не начинать объяснение. Или попробовать объяснить кому-то что-то (тут можно и попробовать, так как вдруг объяснить человеку не выйдет). Пассажи про НЕрефлективность мышления — это вообще нечто фееричное. И вообще, весь комментарий — это поток сознания, еще и неструктурированный.

                                            0
                                            Спасибо за критику и за то что прочли мою статью и комментарии к ней. Это труд и я его ценю. Часть Ваших замечаний резонна и я внимательно к ним отнесусь при подготовке более качественного объяснения. Относительно связи сознания и мышления, то в нескольких словах она такова: сознание это транс-алгоритмический объект, как бы чистая возможность чего угодно, и каких угодно спонтанно возникающих вещей и алгоритмов, а мышление это конструктивный процесс(алгоритм) который с любой заданной точностью аппроксимирует этот транс-алгоритмический объект. Мышление — это конструктивная аппроксимация сознания. Еще можно так сказать, но опять же — как бы: сознание — это как бы неконструктивная бесконечно-сложная, ни от чего не зависящая, но при этом, реально существующая семантика, в статье я назвал ее «чисто возможной», а мышление — это потенциально бесконечный процесс развертывания этой чисто возможной семантики. Поскольку это все тесно связано с понятием «смысл», то смысл я понимаю исключительно конструктивно и широко. Смысл какого-либо объекта — это то, что можно сделать, соорудить, сконструировать из этого объекта, то есть смысл — это переход от текущей, наличной, актуальной конструкции к какой-то потенциально возможной конструкции. Именно ввиду такого моего понимания смысла, я называю алгоритм — алгоритмом метафоры. И еще, я хотел бы призвать Вас к более дружественному тону, пожалуйста, я уверен, у нас нет причин для агрессивного противостояния. Еще раз, спасибо, что потратили силы на мою статью.
                                        0
                                        Компьютерные логики и рассуждения были описаны ещё в 30-х годах прошлого века (см. например, книжку Rusell, Norvig, «Artificial Intelligence: A Modern Approach», раздел «Knowledge, reasoning, and planning», исторические справки). К сожалению, эффективно запрограммировать логические рассуждения до сих пор никому не удавалось. Это Эверест AI. Одна из недавних попыток — это стартап Grakn.AI, посмотрите, думаю, вам будет интересно.
                                          0
                                          Спасибо за ссылки! Но я вовсе не пытаюсь запрограммировать логические рассуждения, мой алгоритм не связан с формальными логиками.
                                          0
                                          А вы не пробовали дать более строгие определения тем понятиям которыми оперируете в рассуждениях? С виду ваш подход к формализации он математический. Математики очень любят такие вложенные абстракции и свойства, но у них всё очень строго в смысле чёткости определения каждого понятия и его места в системе знаний. Без этой чёткости и строгости закономерной системы просто не получается. Я зациклился уже на названии статьи, так как в моём понимании алгоритм есть продукт мышления и сознания, а у вас в заглавии наоборот.
                                            0
                                            Сейчас я не могу помочь Вам лучше понять мои идеи, поскольку более понятных объяснений у меня пока нет, но я думаю над ними, и когда придумаю, дам ответ.
                                              0
                                              Чуть выше, в комментарии для shchepin, я более явно выразил связь мышления и сознания чем это сделано в статье. Возможно этот комментарий немного прояснит ситуацию, как алгоритм может быть связан с мышлением.
                                                0
                                                Я просто люблю придираться к словам, по тем причинам, что человек, использующий слова, в данном случае русского языка, не всегда понимает и сам осознаёт значение используемых им слов. Это не относится напрямую к вам, это в целом человеческая природа такая — нам проще даётся повторение за кем либо, нежели понимания сути самого этого повторения слов и фраз. Вы писали, что имеете свой взгляд на трактовку «общепринятых» вещей и определений, но вообще часто в книгах, при обсуждении какого-то материала и некой системы знаний, часто новой, вводятся определения с которыми работает автор, чтобы у читателя не возникало вопросов и непонимания. У вас работа оперирует довольно многим количеством таких определений и терминов, и строгости не видно. Без строгости возникает противоречивость и непонимание. А значит и системности нет и выглядит как попытка «впихнуть невпихуемое». И я с одной стороны прекрасно понимаю что предмет ваших исследований в будущем будет более чётким и строгим, если цивилизация будет двигаться в сторону всех этих киборгов из научно-фантастических фильмов. Но с другой стороны без системности нет какой-то «философской красоты». И для подобного есть более определённое название как «нечёткая логика». Единственное что мне пришло в голову, после того как я попытался найти реальный пример из жизни — это программа которая вычисляет число Пи с заданной точностью. Если ей поставить условие вычислять цифры бесконечно, то мы имеем:
                                                1) Алгоритм. Конечный.
                                                2) Процесс. Бесконечный.
                                                3) Результат процесса, в котором каждая циферка, как уже вычисленная так и все те которые будут вычислены в будущем, связаны со всеми циферками как уже вычисленными так и будущими совершенно определёнными и непротиворечивыми закономерностями.
                                                У меня тут рождается вопрос: А можно ли эту маленькую программу вычисляющую значение числа Пи, назвать объектом который реализует в себе и сознание и мышление?

                                                Для меня слово «сознание» это образование из «со» + «знание», если переводить дословно то «общее знание» (ну это как сотрудник (вместе трудились), собутыльник(вместе выпивали), сослуживец(вместе служили) соавтор(вместе написали)) Исходя из этого понимания я могу сделать вывод, что моё сознание, как и кого-либо ещё не принадлежит ему самому, а является объединяющим явлением (или свойством), и как следствие является причиной всяких общественных процессов и явлений в мире «сознающих». Потому тут всплывают очень глубинные философские штуки, такие как: а кто/что может этим самым сознанием обладать. Вы утверждаете что алгоритм может. Я могу найти кучи контраргументов которые разобьют в пух и прах ваши концепции из-за их внутренней противоречивости. Но в общем если выставить некие рамки в определениях, то я могу и согласиться что генератор значения числа Пи, вполне себе может мыслить бесконечно и продуктивно и даже алгоритмически, если строго математически построить систему мышления и разложить всё по полкам.
                                              0
                                              Идея настолько оригинальная и логичная, что кажется перспективной. Но для проверки необходим прототип. Простейшая среда вроде лабиринта, простейшие сигналы, простейшие инструменты. Если сработает, можно будет о чем-то говорить.
                                                0
                                                Спасибо!
                                                  0
                                                  Не выйдет. Система не сможет решить простейшую задачу, т.к. алгоритм уходит в бесконечность. Задачу даже в принципе невозможно поставить.
                                                    0
                                                    Что же делать?
                                                      0
                                                      Формальная система из статьи недостаточно мощная. Есть оператор дедукции, который дублирует символы. Есть оператор абстракции, который просто выносит символы за скобки. Но нет оператора сокращения. Это может быть например так: подстрочку (aaa) заменяем на (b).
                                                      Насчет совместимости с вашей системой не уверен, но в любом случае аналогичный оператор должен быть.
                                                      Важно! С таким оператором система превращается в полноценную формальную систему с неполнотой Геделя и проблемой останова. И возможность создания ИИ уже зависит только от правильной «затравки», по вашим же словам
                                                +1
                                                Наиболее практичное определение такое:
                                                Мышление — это способность решать задачи.
                                                Насколько ваша система это умеет делать?
                                                  0

                                                  Ну хорошо, компьютер вот решает задачи, значит у него есть мышление? Забегая вперед, да, компьютером обыкновенно пользуется человек для решения своих задач. Но вы не уточняли – задачи и все тут. Как вы выделяете задачу? Камень лежит на месте, чем не задача?

                                                    0
                                                    Всё верно: если компьютер решает задачи, то у него есть мышление. Чем лучше решает, и больше задач, тем лучше мышление.
                                                    Тест тьюринга гляньте, опять же — там задача одна, которую компьютер и человек должны решать, и она используется как критерий (как прокси) для определения мыслит ли компьютер.
                                                    На самом деле, можно сделать проще: взять круг всех задач, которые решает система, и исследовать его свойства: что это за задачи, каков критерий попадания задач, и т.п.
                                                    Часто при этом нам не нужно интересоваться задачами, которые человек не решает, а только теми, которые человек решает (вычесть из решаемых компьютером задач, не решаемые человеком задачи). Тогда задача про лежание камня нам будет не интересна.
                                                    А вот потом уже разбирать, какие задачи система решает.
                                                      0
                                                      Ну о том и речь, что мы пытаемся построить систему, устройство и взаимодействие с которой нам будет понятно, т.е. инструмент. Это нормально, но не фундаментально

                                                      Речь даже не про описанный здесь алгоритм, можно придумать какую-нибудь другую сложную систему-генератор. Возможно, правильно «кодируя» наше понимание задачи и подавая его на вход такой системе, мы (опять же, правильно «декодируя») полученное на входе, сможем что-то решать
                                                    0
                                                    Ваше определение практичное, но узкое. Повседневная человеческая практика показывает, что мышление выходит за пределы простого решения задач, выходит за пределы рациональности и логики, все перечисленное возможно, в том или ином смысле, но вовсе не обязательно для мышления. Например, человеческая фантазия, воображение, они не нуждаются в задаче, в целеполагании, даже в осмыслении. Воображение это чистая эстетика — метафоричность, произвольная соотнесенность значений, творческий хаос. Мышление может принимать различные формы, и решение задач лишь одна из возможных форм.

                                                    С моей точки зрения, мышление это способность спонтанно(произвольно и независимо) создавать уникальные и принципиально разные концепции без каких-либо ограничений на содержание и сложность этих концепций. Мышление это независимый источник принципиальной новизны. Мышлению не требуются априори заданные значения явлений, не требуется логика, которая лишь необязательный побочный продукт. Мышление не нуждается в выводе теорем, чтобы создать что-то уникальное и новое. Кстати, обратите внимание, уникальность, если смотреть на нее конструктивно, означает, что в конструкции есть элементы которые ни к чему не сводятся, то есть истинно уникальную конструкцию невозможно собрать из запчастей других конструкций. Уникальность, грубо говоря, беспричинна. Тут, конечно, может возникнуть вопрос о том, возможна ли в принципе такая абсолютная уникальность, и ответить на него можно только прямой демонстрацией такой уникальной штуки, и в данном случае это мой алгоритм, он в динамике является такой уникальной конструкцией.

                                                    Теперь по поводу решения задач. Мой алгоритм можно научить решать какие угодно задачи. В частности, он обладает свойством самоорганизации, то есть может независимо изменять свои свойства и адаптироваться. Может становиться сколь угодно сложным в своей динамической конструктивной организации, — в своем поведении.

                                                    Мышление может выбирать каким быть. В частности может выбирать решать или не решать задачи.
                                                      0
                                                      Оу, ваша система даже этого узкого мышления не умеет. С чего она должна что-то более широкое уметь?
                                                      Если вы утверждаете, что ваша система *умеет* решать какие-то задачи, то вы в этом посте, увы, не показали, как она эта делает.
                                                        +1
                                                        Повседневная человеческая практика показывает, что мышление выходит за пределы простого решения задач, выходит за пределы рациональности и логики
                                                        Нет, не выходит. Даже у человеческой фантазии, воображения, и т.д. существуют рациональные цели, даже если их может быть не видно беглым взглядом. Появление и закрепление этих возможностей в процессе эволюции не случайно, оно объясняется статистическим повышением шанса выживания.
                                                        Мой алгоритм можно научить решать какие угодно задачи.
                                                        Искуственную нейросеть с триллионами нейронов тоже можно, но на практике сделать это затруднительно, да и нет особого смысла. Но нейросети показали себя хорошо для некоторых классов задач, а ваш алгоритм не имеет даже этого. Чтобы с нуля сделать нейросеть и научить ее складывать пару чисел нужно меньше часа. Попробуйте научить алгоритм решать хотя бы такую элементарную задачу. Если не выйдет в течение недели, то его даже вспоминать нет смысла.
                                                          0
                                                          Вот тут не могу не согласиться, ИНС все-таки довольно универсальная и при том практичная модель, разве что не бесконечно сложная (но может можно по мере необходимости «наращивать» слои, тогда такая модель вообще вне конкуренции)

                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                    Самое читаемое