選択のエントロピーから効用関数への愛——哲学者、物理学者、そしてMLエンジニアのための新しいモデル
序文
前回の記事(『変分計算は選択の自由の比喩』)では、概念的な類推を提案しました:障害物の多い場所での道の探索は人生の選択の比喩であり、偶然性(変異性)の追加は自由意志の数学的類似物です。
しかし比喩は比喩であった。式はその道を説明したが、その道ではなかった 価値アルゴリズムは軌道を見つけ出すだけで、「良い」選択と「悪い」選択を区別しなかった。そして、「愛」、「罪」、そして「建築家」の概念は括弧の外に持ち出され、純粋な哲学の領域に置かれた。
新しい記事の目的は次のステップに進むことです。
私たちは建設します 形式数学モデル 「ベリー・パルミナリー――源流」において、
潜在的な人生の軌道、
選択のエントロピーを自由の尺度として、
愛の効用関数を人生の目標関数として、
罪の度合いを他者のエントロピーの減少として、
建築家を可能性の空間を創造する者として、プログラマーではなく定義しました。
我々は形而上学の「数学的証明」を主張するものではない。我々は 実用的な仮説を提案しており、それは:
プログラマーやMLエンジニアにとって有益である — 検索、確率的最適化、multi-agentシステムにおけるdiversityを記述するための言語を提供する
— 哲学者にとって興味深い — 自由、罪、愛といった概念を形式化する。これらは通常、質的な考察の領域に留まっている。
物理学者には理解できる — 勾配計算の道具、エントロピー、最小作用の原理を使用する。
形而上学者に対しては正直である — 具体的な宗教システムとの関連を隠さず、それを強制しない。
私たちはまた行う MATLABにおける計算実験, 実際に入力された式がどのように機能するかを示すために。私たちは神の存在や自由意志を「証明」しない。ただし、以下を示すだけである。
「パルモニック・フェイル」の公理を前提とするなら、それらから特定の数学的な関係が導かれます。
これらの関係は単純なモデルで数値的に検証できます。
実験の結果は元の公理に反しないだけでなく、それらを視覚的に示している。
研究の目的と課題
記事の目的
「パаломニクの信念—始まり」の形而上学的モデルを開発し提示し、選択の自由、人生の道の有用性、そして「罪」のための新しい記号と量的な測定を導入し、MATLABにおける計算実験でこのモデルの機能を示す.
課題
本質論を形式化 —可能な人生の軌道の空間を定義 Ω 境界条件と制限があります。
選択のエントロピーを入力する SS 自由意志の測度として示し、そして決定主義が適合していることを示す S=0、そして完全な自由は S=Smax.
愛の効用関数を構築する U(γ), は滑らかなラグランジアンを使用して L は、それを伝統的な宗教の「壁」的な機能と比較します。
罪を定義します。 ΔS罪 を、他の人(またはエージェント)の選択のエントロピーを減少させる行為として定義し、この概念を形式化します。
アーキテクチャー A の役割を、可能性の空間、初期条件、ルールの創造者として、しかし厳密な軌道ではないものとして具体的に述べます。
MATLABで計算実験を実装:
障害物がある場における複数の経路を生成
経路の分布のエントロピーを評価
各経路に対する有用性を計算
「過ち」を単一経路への強制としてモデル化し、エントロピーの変化を測定
結果を分析 はモデルの哲学的および技術的議論への適用可能性について結論を出すこと.
記事の構成を確認していただくようお招待します:
記事の構成
序文 (現在のセクション)— 問題提起、目的と課題.
第1部. 形而上学の公式:可能性のある道の空間.
形式的な定義 Ω、境界条件および制約。記号 Ωの導入。第2部。選択のエントロピー:自由の尺度
分布 p(γ)、エントロピー S、決定論と自由の解釈。第3部。愛の有用性関数:人生の目標関数
ラグランジュ関数 L、泛関数 U(γ), なめらかさと障壁.第4部. 罪とはエントロピーの減少(原初の概念).
定義. ΔS罪, 例と議論.第5部. 建築家は空間の創造者(プログラマではない).
記号 A, 伝統的な神義論と比較.第6部. MATLABでの計算実験
モデルの説明、コード、グラフ、および結果の分析.結論.
新しい公式の要約、質問「これがなぜ全部?」への回答.
数学的まとめ(予備.

ではな、始めましょう。
第1部。式における本質論:可能性のある経路の空間
1.1. なぜ形式的存在論が必要か
自由度(エントロピー)、有用性(愛)、あるいは「罪」を導入する前に、私たちは基本的な問いに答える必要がある:
数学的な観点から見ると、「人生の道」とは何か?
古典物理学において、物質点の軌道は関数 r(t)r(t), 動きの方程式を満たすもの。経済においては、効用を最大化する選択の連続。機械学習においては、損失関数を最小化するパラメータ空間の経路。
私たちの形而上学「パイロットの信念—始まり」 において、道 — それは状態空間における連続的な曲線で、誕生 Aを結ぶ。 と死(または設定された目標) B、禁止されている領域を交差しない軌道 O (現実の制約)
。しかし、物理学とは異なり、軌道 唯一である (決定論)ではありません。私たちは、一般に複数の軌道が存在すると仮定します 。 の可能性のある道。さらに、それらの中から一つを選ぶことが 自由意志である。
1.2. 空間 ΩΩ
の形式定義を考える。
t — 時間、 t∈[0,T]、ここで 0 — 誕生の瞬間、 T — 死亡の時点(または計画の期間)。
γ(t) — 人の状態を記述するベクトル、時点 t (物理的、精神的、社会的、精神的)の時点。状態空間の次元 n は任意であってもよいが、視覚的にわかりやすくなるように n=2で作業する。 (平面上的座標)。
A=γ(0) — 初期状態(誕生)。
B=γ(T) — 終端状態(死滅または達成目標)。
O — 「禁止」状態の集合、訪れることが不可能または不適切な状態(病気、法律違反、社会的タブー)。
定義 1. 可能な生活の軌道の空間 Ω — これは、境界条件と制約を満たすすべての連続関数 γ(t)の集合である:

1.3. 例としての可視化
最も簡単な場合を考えます: n=2、フィールド 20×20、障害物 O — 三つの円と一つの長方形、 A — 左下角, B — 右上角.
以下はMATLABのコードで、空間を離散化し、 Ω (もちろんすべてではなく、いくつかのランダムなものだけ)からのいくつかのパスの例を可視化しています.
% ========================================================================
% 1.3. Визуализация пространства Ω на дискретной сетке
% ========================================================================
clear; clc; close all;
% Размер сетки
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
% Препятствия
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2
obstacleMap(i,j) = 1;
end
if sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5
obstacleMap(i,j) = 1;
end
if sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8
obstacleMap(i,j) = 1;
end
if X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18
obstacleMap(i,j) = 1;
end
end
end
% Старт и финиш (исправлено: [строка, столбец])
start = [N, 1]; % левый нижний угол
goal = [1, N]; % правый верхний угол
% Проверка, что старт и финиш не в препятствиях
if obstacleMap(start(1), start(2)) == 1 || obstacleMap(goal(1), goal(2)) == 1
error('Старт или финиш находятся внутри препятствия!');
end
% Поиск кратчайшего пути (BFS)
[path_det, ok] = bfs_path(obstacleMap, start, goal);
% Генерация нескольких альтернативных путей
numPaths = 5;
paths = cell(numPaths, 1);
for k = 1:numPaths
[p, ~] = var_path(obstacleMap, start, goal, 0.5 + k*0.1);
paths{k} = p;
end
% Визуализация
figure('Name', 'Пространство возможных путей Ω', 'NumberTitle', 'off');
imagesc(x, y, obstacleMap');
colormap([1 1 1; 0.5 0.5 0.5]);
axis xy; axis equal;
title('\Omega: множество возможных траекторий');
xlabel('X'); ylabel('Y');
hold on;
% Рисуем детерминированный путь
if ok && ~isempty(path_det)
plot(path_det(:,2), path_det(:,1), 'b-', 'LineWidth', 2);
end
% Рисуем альтернативные пути
colors = ['r', 'g', 'c', 'm', 'y'];
for k = 1:numPaths
if ~isempty(paths{k})
plot(paths{k}(:,2), paths{k}(:,1), '--', 'Color', colors(mod(k-1,5)+1), 'LineWidth', 1.5);
end
end
plot(x(start(2)), y(start(1)), 'go', 'MarkerSize', 10, 'LineWidth', 2);
plot(x(goal(2)), y(goal(1)), 'ro', 'MarkerSize', 10, 'LineWidth', 2);
legend('Оптимальный путь', 'Альтернативные пути', 'Старт', 'Финиш', 'Location', 'best');
hold off;
disp('Готово!');
% ========================================================================
% Функция BFS для поиска кратчайшего пути
% ========================================================================
function [path, found] = bfs_path(map, start, goal)
[rows, cols] = size(map);
% Направления: вверх, вниз, влево, вправо
directions = [-1 0; 1 0; 0 -1; 0 1];
% Очередь для BFS
queue = [start, 0]; % [row, col, distance]
visited = false(rows, cols);
parent = zeros(rows, cols, 2); % для восстановления пути
visited(start(1), start(2)) = true;
found = false;
while ~isempty(queue)
current = queue(1, :);
queue(1, :) = [];
if current(1) == goal(1) && current(2) == goal(2)
found = true;
% Восстановление пути
path = reconstruct_path(parent, start, goal);
return;
end
% Проверка соседей
for d = 1:4
newRow = current(1) + directions(d, 1);
newCol = current(2) + directions(d, 2);
if newRow >= 1 && newRow <= rows && newCol >= 1 && newCol <= cols
if ~visited(newRow, newCol) && map(newRow, newCol) == 0
visited(newRow, newCol) = true;
parent(newRow, newCol, 1) = current(1);
parent(newRow, newCol, 2) = current(2);
queue(end+1, :) = [newRow, newCol, current(3)+1];
end
end
end
end
path = [];
found = false;
end
% ========================================================================
% Функция восстановления пути
% ========================================================================
function path = reconstruct_path(parent, start, goal)
path = [goal];
current = goal;
while ~(current(1) == start(1) && current(2) == start(2))
prevRow = parent(current(1), current(2), 1);
prevCol = parent(current(1), current(2), 2);
if prevRow == 0 && prevCol == 0
break; % нет пути
end
current = [prevRow, prevCol];
path = [current; path];
end
end
% ========================================================================
% Функция генерации альтернативных путей (вариационный метод с шумом)
% ========================================================================
function [path, success] = var_path(map, start, goal, noise_level)
% Сначала находим оптимальный путь через BFS
[opt_path, found] = bfs_path(map, start, goal);
if ~found
path = [];
success = false;
return;
end
% Добавляем случайные отклонения от оптимального пути
path = opt_path;
% Для каждого внутреннего узла (не старт и не финиш) добавляем случайное смещение
for i = 2:size(path, 1)-1
% Пробуем сместиться в случайном направлении
for attempt = 1:10 % несколько попыток
delta_row = randi([-1, 1]) * noise_level;
delta_col = randi([-1, 1]) * noise_level;
new_row = round(path(i, 1) + delta_row);
new_col = round(path(i, 2) + delta_col);
% Проверка границ и препятствий
if new_row >= 1 && new_row <= size(map, 1) && ...
new_col >= 1 && new_col <= size(map, 2) && ...
map(new_row, new_col) == 0
path(i, 1) = new_row;
path(i, 2) = new_col;
break;
end
end
end
% Убираем повторяющиеся точки
path = unique(path, 'rows', 'stable');
success = true;
end
結果: グラフ(図1)には Ωのいくつかの要素が描かれています。 — 决定論的(青い)経路と代替経路(色付き点線)が障害物を迂回する。注意:それらはすべて異なるが、すべて境界条件を満たし、障害物を交差しない。
1.4. �境界条件はメタフィジカルな定数である
私たちのメタフィジックにおいて AA と BB が設定されています。人は自分の出生を選ぶことはできず、(通常は)死を選ぶこともできません。しかし、それらの間にあるものは— 自由の領域—
A —建築師の贈り物です。初期条件(家族、健康、才能)は選べませんが、それらは道を厳密に決定するものではありません。
B—客観的な死と同様に、主観的な目的(「人生の意味」)としてもあり得る。後者の場合、人は Bを選択できるが、これもすでに道の一部である。
1.5. 制限 O: 自然法則と社会的規範
O —これらは「壁」である空間 Ω。無視することはできない。私たちのモデルでは:
物理的な制限: 重力、資源の限界、病気.
社会的な制約: 法則、規範、タブー.
倫理的な制約: 『旅人の信仰』においては、それらは外部のものではなく、内部のもの(良心)である.
重要: O は道を唯一としない。それ単に可能性の領域を狭めるだけである.
1.6. この定義は以下の部分
選択のエントロピー S (第2部)において、確率 p(γ) が Ω
上でどの程度均等に分布しているかを測るものになります。 利得関数 U(γ) (第3部)は__JHSNS_SEG_28dd92f4_213__γ__JHSNS_SEG_28dd92f4_214__に関する積分になります。 — つまり、 Ωに対応する機能を持つ—
罪 ΔS罪 (第4部)は、1つのエージェントの行動が Ω 他のエージェントをどの程度狭めるかを測定します
。1.7. 第1部の簡単な要約
私たちは形式的に、 可能な生活の軌道の空間 Ωを定義しました
Ω は 境界条件 A,B と 制約 Oに依存します
。 Ω は 無限の要素 を含んでおり—これは選択の自由を表す数学的表現です__JHSNS_SEG_28dd92f4_233__。
MATLABでの可視化は、多様な経路を明確に示しています.
次に第2部へ移ります. 可能性の空間が確定した今、私たちは 選択のエントロピー S を導入します.
第2部. 選択のエントロピー: 自由度の測度
2.1. 機会空間から確率の配分へ
パート1では、可能な生活の軌道の空間を定義しました オメガ —境界条件と制約を満たす全ての経路の集合である。しかし、それを知るだけでは オメガ 多くの要素を含んでおり、まだ数量を示していない 選択の自由.
確かに、二つの状況を想像してみてください:
すべてのパスが Ω から等確率です. 人間は本当にどれを選んでもいいので、これは最大の自由です.
Ω のうち一つのパスは確率が1に近く、他のすべてはほぼ0です. 形式的に Ω はまだ多くの要素を含んでいますが、実際には選択肢はありません.
したがって、私たちは 確率分布 p(γ) を集合 Ω__上に確定させる必要があります. これは、人(またはアルゴリズム)がどの軌道を選ぶかどうかの頻度を示しています.
注記: 人 p(γ) — これは主観的な自由の尺度(どれだけ異なる選択肢を選ぶ準備ができているか)です。アルゴリズム(例えば、パス探索)にとっては、ランダムパラメータを変化させたときの軌道生成の客観的な頻度です。
2.2. 選択のエントロピーの定義
情報理論において、シェノンのエントロピーは分布の不確実性を測る尺度です。連続空間 Ω (経路の連続体) は以下のように定義されます:

ここでは積分はすべての可能な軌道に対して取られます。離散化された空間(MATLAB実験のもののように)では、積分はすべて見つかった経路に対する和に置き換えられ、 p(γ) は変分アルゴリズムを複数回実行したときに各経路が現れる頻度として評価されます。
エントロピーの性質 S:
Sは0以上.
Sは0である 場合に限り、分布は退化している:一つの経路が確率1を持つ、他のすべてが0である。これは 完全な決定論である.
S=Smax は、すべての可能性のある経路が等確率である時に達成される。これは 最大の自由 (固定された集合において)である。 Ω).
2.3. 决定論は特殊な場合として
古典的なパス探索アルゴリズム(例えば、ランダム性のないBFS)において、分布 p(γ) は退化している:

したがって、 S=0。これは選択がないことを示す数学的表現である。
伝統的な宗教では、「正しい道」が一度きりに定められている(教義、戒律)もので、どんな逸脱も罪であり、実際には S=0が前提とされています。選択は幻想です。
2.4. 自由は高いエントロピーとして
「パルマナーの信仰――出発」において、自由とは制限の不在ではなく、 変異性の存在 です。エントロピーが高ければ S、あるほど人の自由度が高まる.
もし S が Smaxに近ければ、人は実際に多くの平等な(ある基準から見れば)選択肢の中から選ぶことができる.
高エントロピーは混沌を意味しない。それは 選択肢の豊かさを意味する この豊かさから創造性、愛、責任が生まれます。
2.5. 計算実験:MATLABでのエントロピーの評価
私たちは第1部の変分アルゴリズムを修正します:
N 個の異なる経路を生成します(ランダム数のシードを変更することで)。
各経路の頻度を評価します。
エントロピーを計算する エス 離散分布の公式で。
% ========================================================================
% 2.5. Оценка энтропии выбора
% ========================================================================
clear; clc; rng(42);
% Создание карты препятствий
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2 || ...
sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5 || ...
sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8 || ...
(X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18)
obstacleMap(i,j) = 1;
end
end
end
start = [N, 1];
goal = [1, N];
% Генерация множества путей
N_paths = 200;
paths = cell(N_paths, 1);
fprintf('Генерация %d путей...\n', N_paths);
for i = 1:N_paths
if mod(i, 50) == 0
fprintf(' Прогресс: %d/%d\n', i, N_paths);
end
paths{i} = var_path(obstacleMap, start, goal, 0.5);
end
% Фильтрация пустых путей
valid_paths = paths(~cellfun(@isempty, paths));
fprintf('Успешно сгенерировано: %d/%d\n', length(valid_paths), N_paths);
% Преобразование путей в уникальные строковые ключи
path_keys = cell(length(valid_paths), 1);
for i = 1:length(valid_paths)
p = valid_paths{i};
% Создаем ключ как строку координат
key = '';
for j = 1:size(p, 1)
key = [key, sprintf('(%d,%d)', p(j,1), p(j,2))];
end
path_keys{i} = key;
end
% Подсчет уникальных путей
[unique_keys, ~, ic] = unique(path_keys, 'stable');
counts = accumarray(ic, 1);
probs = counts / sum(counts);
% Энтропия Шеннона
entropy = -sum(probs .* log2(probs));
% Результаты
fprintf('\n========== РЕЗУЛЬТАТЫ ==========\n');
fprintf('Сгенерировано путей: %d\n', N_paths);
fprintf('Уникальных путей: %d\n', length(unique_keys));
fprintf('Энтропия выбора: %.4f бит\n', entropy);
fprintf('Макс. возможная энтропия: %.4f бит\n', log2(length(unique_keys)));
fprintf('Относительная энтропия: %.2f%%\n', entropy/log2(length(unique_keys))*100);
fprintf('================================\n');
% Визуализация
figure('Name', 'Распределение путей', 'Position', [100, 100, 800, 400]);
subplot(1,2,1);
bar(probs(1:min(10, length(probs))));
title(sprintf('Распределение вероятностей (H = %.4f бит)', entropy));
xlabel('Тип пути');
ylabel('Вероятность');
grid on;
subplot(1,2,2);
stairs(cumsum(sort(probs, 'descend')), 'LineWidth', 2);
title('Кумулятивное распределение');
xlabel('Количество типов путей');
ylabel('Суммарная вероятность');
grid on;
xlim([1, length(probs)]);
disp('Готово!');
% ========================================================================
% ФУНКЦИИ
% ========================================================================
function [path, found] = bfs(map, start, goal)
[rows, cols] = size(map);
directions = [-1 0; 1 0; 0 -1; 0 1];
queue = start;
visited = false(rows, cols);
visited(start(1), start(2)) = true;
parent = zeros(rows, cols, 2);
found = false;
while ~isempty(queue)
current = queue(1, :);
queue(1, :) = [];
if isequal(current, goal)
found = true;
path = reconstruct_path(parent, start, goal);
return;
end
for d = 1:4
nr = current(1) + directions(d, 1);
nc = current(2) + directions(d, 2);
if nr >= 1 && nr <= rows && nc >= 1 && nc <= cols
if ~visited(nr, nc) && map(nr, nc) == 0
visited(nr, nc) = true;
parent(nr, nc, 1) = current(1);
parent(nr, nc, 2) = current(2);
queue(end+1, :) = [nr, nc];
end
end
end
end
path = [];
found = false;
end
function path = reconstruct_path(parent, start, goal)
path = goal;
current = goal;
while ~isequal(current, start)
prev = [parent(current(1), current(2), 1), parent(current(1), current(2), 2)];
if all(prev == 0)
break;
end
current = prev;
path = [current; path];
end
end
function path = var_path(map, start, goal, sigma)
[opt_path, ok] = bfs(map, start, goal);
if ~ok || isempty(opt_path)
path = [];
return;
end
if size(opt_path, 1) <= 2
path = opt_path;
return;
end
path = opt_path;
max_offset = max(1, round(sigma));
for i = 2:size(path, 1)-1
for attempt = 1:10
dr = randi([-max_offset, max_offset]);
dc = randi([-max_offset, max_offset]);
nr = path(i, 1) + dr;
nc = path(i, 2) + dc;
if nr >= 1 && nr <= size(map, 1) && ...
nc >= 1 && nc <= size(map, 2) && ...
map(nr, nc) == 0
path(i, :) = [nr, nc];
break;
end
end
end
% Удаление последовательных дубликатов
unique_path = path(1, :);
for i = 2:size(path, 1)
if ~isequal(path(i, :), unique_path(end, :))
unique_path(end+1, :) = path(i, :);
end
end
path = unique_path;
end

結果の分析:
200回の発射のうち、それぞれがユニークな道を歩んだ。 一つも重複はありません。
エントロピーは理論的な最大値に達した このパス集合(log2200≈7.64)に対して.
これは、 パスの分布が均等であることを意味します:すべての利用可能な経路は等確率です.
σ = 0(決定論的アルゴリズム)の場合:Уникальных путей = 1, Энтропия = 0 бит, Относительная энтропия = 0% —完全な決定論.
σが増加するにつれてエントロピーが増加します、最大値を可能な経路の数によって定義される Ωに向けて追求し、私たちの実験では極限に達しました:アルゴリズムはすべての可能性の空間を調査します。
2.6. メタフィジクスにおけるエントロピーの解釈
『パルマノの信仰――始まり』において、エントロピー S は 自由意志の尺度です。
S=0 (決定論):
堅牢な脚本に従った生活、各行動が予め決められている。人間はマリオネットだ。自由は幻覚だ。S=Smax (最大エントロピー):
自由の理想。人間はいつでも許容される軌道の中からどれか一つを選ぶことができます。すべての選択肢は平等です(自由という観点ではそうですが、価値という観点では必ずしもそうではない)。0<S<Smax (中間的な場合):
部分的な自由。いくつかの道が他よりも確からしいが、選択はまだ存在する.
私たちの実験は 極限のケース S=Smaxに達した。 これは、障害物があるグリッドのパス探索という簡単なタスクにおいても 選択肢の多様性が完全に存在しうることを示しています。アルゴリズムには「隠れた決定論」はありません
。重要: 自由は無制限ではありません。制限 O (障害物)はどこにも消えません。しかし、これらの制限の範囲内には存在します 平等の機会の空間.
2.7. エントロピーから有用性へ
自由そのものは「何を選ぶか?」という問いに答えない 「何を選ぶか?」。すべての道が等確率である場合(S=Smax)なら、人は自由だが、方向性がない。彼には 目標関数が必要で、それは「良い」軌道と「悪い」軌道を区別する。
の次のセクションでは、 愛の効用関数 U(γ) を導入します。これは、パスの価値を評価するラグランジュアンに相当するものです。
2.8. 第2章の要約
確率分布 p(γ) は、各経路を選択する確率を設定します。 Ω
エントロピー S — 自由度の量化的測定: S=0S=0 は決定主義の場合、 S>0 は自由の場合です.
MATLABでの実験 は、十分な変動性(σ=0.8)がある場合、アルゴリズムが達成できることを示しました。 最大エントロピー:全ての200の経路はユニークで、分布は均等です.
「パイロットの信念」の形而上学では、エントロピーは 自由意志の度合いとして解釈されます.
今、選択の自由を測ることができるようになったので、私たちは理解する必要があります どの経路がより良いか。これにために、私たちは導入します 愛の効用関数 U(γ) — 最適化問題における目標関数の類似物。
第3部。愛の効用関数:人生の目標関数
3.1. 無目的な自由は混沌
第2部では、選択の自由を測定する方法を学びました (エントロピー) Sエス). 我らは、空間において オメガオメガ 非常に多く(無限に近いほど)の等確率の経路が存在しえるかもしれない。しかし、自由そのものが問いに答えるわけではない。 「どの道が良い?」
無限の選択肢を与えられても、基準を与えられなければ、人は決定できません。彼には ターゲット関数 —「羅針盤」で、方向を示している.
『パルマノフの旅』において、この羅針盤は 愛である.__JHSNS_SEG_28dd92f4_426__条件のない愛、犠牲を要求しない愛、取引をしない愛、地獄の脅威をしない愛.
3.2. 数学的な形式化:効用関数
各経路 γ(t)∈Ω は数 U(γ)に対応し、それが 価値 (有用性、「愛の量」)を表している。
を定義する:

ここで:
L — 愛のラグランジュ関数 (状態、速度、時間に依存する関数);
T — 生存の境界(死または目標達成)。
U(γ)が大きいほど、「良い」道になる。
注記: これは物理学における最小作用の原理との直接的な類推だが、符号だけが異なる。そこでは作用の最小値を探すが、ここでは有用性の最大値を探す。
3.3. ラグランジアンを選択する:滑らかさ対バリアー
のラグランジュ関数L は、「ゲームのルール」を定める関数である。その選択によって、どの経路が最適と判断されるかが決まる。
オプションA:滑らかなラグランジュ関数(条件なしの愛)
ラグランジュ関数は滑らかで連続的であり、奇点のバリアを持たない。次のものに依存することができる:
自由 (エントロピー S),
創作 (行動の多様性),
隣人への愛 (他のエージェントとの相互作用).

すべての要素は滑らかな関数です。「従順でない」ための無限の罰金はありません。これは「神は罰しない、ただ待つ」の考えに合致しています 神は罰しない、ただ待つ.
バリエント・Б: バリアー・ラグランジアン(伝統的な宗教)
ラグランジアンには singularity barrier (許容範囲を超えると無限の罰金が科される)が含まれます

例えば:__JHSNS_SEG_28dd92f4_468__これにより厳格な決定論が生じます:『正しい』以外のどの経路も無限小の有用性しか持ちません 愛は取引である:「聞くなら救う、聞かないなら罰する」.
3.4. 実験の例:異なる有用性を持つ二つの道.
障害物がある私たちのフィールドに戻りましょう。以下を設定します.
青い道(確定論的)— 短いですが、「危険なエリア」(ストレスの源など)に近くを通ります.
赤い道(変動的)— 長いですが、「美しい場所」(公園、静けさ)を通ります.
単純なラグランジアンを定義します:

ここで α と β は重みです。
それでは、ここで過去の記事で道について思い出します(図4)。読んでいない方は参照してください、そうしないと理解できないでしょう:
青い道:長さが短く、快適性が低い → 有用性は中程度。
赤道ルート:距離は長いが、快適性は高い → 有用性はもっと高くなるかもしれない(もし β が十分に大きければ)。
結論は以下の通り: 最適ルートは外部の制約だけでなく、内部の価値システム(ラグランジュアン)にも依存する。
3.5. 計算実験:MATLABでの有用性の評価
私たちのモデルに有用性の機能を追加します。各マップのセルに独自の「快適さ」(熱図)を持たせます。その場合、経路の有用性は訪れたセルの快適さの合計から長さに対する罰金を引いたものです。
% ========================================================================
% 3.5. Оценка полезности пути
% ========================================================================
clear; clc; rng(42);
% Создание карты препятствий и поля комфорта
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
% Препятствия
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2 || ...
sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5 || ...
sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8 || ...
(X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18)
obstacleMap(i,j) = 1;
end
end
end
% Поле комфорта (случайное с гладким градиентом)
comfort = imgaussfilt(randn(N), 5);
comfort = (comfort - min(comfort(:))) / (max(comfort(:)) - min(comfort(:)));
% Старт и финиш
start = [N, 1];
goal = [1, N];
% Поиск путей
[path_det, ~] = bfs(obstacleMap, start, goal);
path_var = var_path(obstacleMap, start, goal, 0.5);
% Функция полезности
alpha = 0.5; % штраф за длину
beta = 1; % коэффициент полезности комфорта
if ~isempty(path_det)
idx_det = sub2ind(size(comfort), path_det(:,1), path_det(:,2));
U_det = beta * sum(comfort(idx_det)) - alpha * size(path_det, 1);
else
U_det = -inf;
end
if ~isempty(path_var)
idx_var = sub2ind(size(comfort), path_var(:,1), path_var(:,2));
U_var = beta * sum(comfort(idx_var)) - alpha * size(path_var, 1);
else
U_var = -inf;
end
% Вывод результатов
fprintf('\n========== ПОЛЕЗНОСТЬ ПУТЕЙ ==========\n');
fprintf('Детерминированный путь: %.4f\n', U_det);
fprintf('Вариационный путь: %.4f\n', U_var);
fprintf('Разница: %.4f\n', U_var - U_det);
fprintf('=======================================\n');
% Визуализация
figure('Name', 'Поле комфорта и пути', 'Position', [100, 100, 800, 600]);
imagesc(x, y, comfort');
colorbar;
axis xy;
axis equal;
title('Поле комфорта (чем светлее, тем лучше)');
xlabel('X');
ylabel('Y');
hold on;
if ~isempty(path_det)
plot(path_det(:,2), path_det(:,1), 'b-', 'LineWidth', 2.5);
end
if ~isempty(path_var)
plot(path_var(:,2), path_var(:,1), 'r--', 'LineWidth', 2.5);
end
plot(x(start(2)), y(start(1)), 'go', 'MarkerSize', 12, 'LineWidth', 2);
plot(x(goal(2)), y(goal(1)), 'ro', 'MarkerSize', 12, 'LineWidth', 2);
legend('Детерминированный', 'Вариационный', 'Старт', 'Финиш', 'Location', 'best');
hold off;
% ========================================================================
% ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
% ========================================================================
function [path, found] = bfs(map, start, goal)
[rows, cols] = size(map);
dirs = [-1 0; 1 0; 0 -1; 0 1];
queue = start;
visited = false(rows, cols);
visited(start(1), start(2)) = true;
parent = zeros(rows, cols, 2);
found = false;
while ~isempty(queue)
curr = queue(1,:);
queue(1,:) = [];
if isequal(curr, goal)
found = true;
path = goal;
while ~isequal(curr, start)
curr = squeeze(parent(curr(1), curr(2), :))';
path = [curr; path];
end
return;
end
for d = 1:4
nr = curr(1) + dirs(d,1);
nc = curr(2) + dirs(d,2);
if nr>=1 && nr<=rows && nc>=1 && nc<=cols && ~visited(nr,nc) && map(nr,nc)==0
visited(nr,nc) = true;
parent(nr,nc,:) = curr;
queue(end+1,:) = [nr, nc];
end
end
end
path = [];
found = false;
end
function path = var_path(map, start, goal, sigma)
[opt, ok] = bfs(map, start, goal);
if ~ok || size(opt,1) <= 2
path = opt;
return;
end
path = opt;
for i = 2:size(path,1)-1
for attempt = 1:10
dr = randi([-round(sigma), round(sigma)]);
dc = randi([-round(sigma), round(sigma)]);
nr = path(i,1) + dr;
nc = path(i,2) + dc;
if nr>=1 && nr<=size(map,1) && nc>=1 && nc<=size(map,2) && map(nr,nc)==0
path(i,:) = [nr, nc];
break;
end
end
end
path = unique(path, 'rows', 'stable');
end成果グラフとコードの結果 :


結果: によって α и β 「最良の」選択はどちらかの道になる可能性がある。これは、 最適性が主観的であることを示している。すべての人に「正しい」道は存在しない—あなた自身の効用関数を最大化する道がある。
3.6. メタフィジクスとの関連
『パルマノの信仰』—出発— 愛 —これは、従順さの報酬ではない。 その存在の構造そのままです 。建築家は空間 Ω を創造し、ラグランジアン
Lを設定しました。ここでは:
無限の罰金(アダーは永遠の罰)はありません 。道の価値は恐怖ではなく、自由 、 創造性__JHSNS_SEG_28dd92f4_516__によって決定されます。 他のことを心配して.
人は自分の良心の範囲で自分の重みを選ぶことができます α,β .
これは 滑らかな倫理 であり 壁の倫理__JHSNS_SEG_28dd92f4_525__伝統的な宗教とは異なり、どんな「間違った」行動も無限の苦しみにつながります。
3.7. 要約3
有用性の機能 U(γ) は、生命の目標関数を定義します
ラグランジュ関数 L は、何が価値であるかを定義します:自由、創造性、近所への愛
滑らかなラグランジュ関数 は、条件を問わない愛に対応します バリア — 愛情を取引として (地獄の恐怖).
MATLABでの実験 は、重み α、β を変更することで、どの道も「最良の」ものにすることができることを示しています。最適性は主観的です.
自由の度合い(エントロピー)と価値の度合い(有用性)の尺度があるので、罪の概念を導入できます. — 他の者の自由を減少させる行為。
第4章。罪とはエントロピーの減少(原初の概念)
4.1. 伝統的な罪の概念からの拒絶
多くの宗教において 罪 — これは神聖な法、禁止、戒律の違反である。罪は罰(地獄、カーマ、低等存在への転生)を引き起こす。このモデルは 司法制度ルールがある、違反がある、罰則がある。
「ベーラ・パルミナレ — 出発」では、私たちは 代替の定義、外部の法則に依存せず、 内部の自由度.
罪とは、意識的に選択のエントロピーを減少させる行為である エスS 他の人物(または他の生き物).
換言すれば、罪を犯すとは 他者にとっての可能性の領域を狭めることで、己の意志を強加し、自由を奪うことである.
4.2. 形式的な定義
行為者が行動する前に X 行為者の選択のエントロピー Y は Sдоでした。行動後— Sпослеです。では:

もし ΔSгрех>0 —エントロピー Y が減少した、自由が減少した。これは グレース から Xです.
もし ΔSгрех=0 なら、エントロピーは変化せず、自由もそのままです。これは中立的な行為です。
もし ΔSгрех < 0 なら、エントロピーが増加し、自由 Y が高まりました。これは 利益 です。
注意: 罪は外部の裁判官を必要としません。それはエントロピーの変化によって客観的に測定されます。これは「神が罰する」ではなく「あなたが他者の自由を減らした、それが事実だ」ということです.
4.3. 実生活の例
例1:罰の脅しで道を強いる
親が子供に言う。「医者になるんだ、それでないと相続を奪うよ」。可能な職業の空間 Ω は子供にとって多くの選択肢から一つに絞られます。エントロピー S は急激に低下します。これは 罪であり、たとえ親が子供に「善」を強く願うとしてもです。
例2: 関係における操作
「もし君が私を愛しているなら、私が望むようにすることをしなさい」。愛情は強制の道具になります。パートナーを選ぶ選択肢の範囲が狭まります。これは 罪.
例3:地獄の脅威
宗教システムは言います。「儀式を守らないと、地獄で燃えてしまう」可能な人生の道のり Ω が狭い小道に縮小され、どの偏りも無限の苦しみで罰される。選択のエントロピーはゼロに落ちる。これは 制度的な罪、個々の聖職者が誠実であるとしても.
4.4. 伝統的な概念との違い

4.5. 計算実験: MATLABにおける罪のシミュレーション
私たちは「罪」を、エージェントに唯一の道を強制することとしてモデル化することができます
二つのエージェントがあるとします
エージェントA (自由)はスタートからゴールへの道を変分アルゴリズム(S≈Smax)を使って探します
エージェントB (罪人)はエージェントAに自分の唯一の「正しい」方法(例えば確定されたBFS)を強いている。
エージェントAの選択のエントロピーを介入前後に測定する。
% ========================================================================
% 4.5. Моделирование греха
% ========================================================================
clear; clc; rng(42);
% Создание карты препятствий
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2 || ...
sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5 || ...
sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8 || ...
(X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18)
obstacleMap(i,j) = 1;
end
end
end
start = [N, 1];
goal = [1, N];
% Параметры симуляции
N_sim = 100;
entropy_before = zeros(N_sim, 1);
entropy_after = zeros(N_sim, 1);
fprintf('Моделирование греха (%d симуляций)...\n', N_sim);
for sim = 1:N_sim
if mod(sim, 20) == 0
fprintf(' Прогресс: %d/%d\n', sim, N_sim);
end
% Генерируем множество свободных путей (без принуждения)
paths_free = cell(200, 1);
for i = 1:200
paths_free{i} = var_path(obstacleMap, start, goal, 0.8);
end
% Энтропия до
entropy_before(sim) = compute_entropy(paths_free);
% Навязываем один «правильный» путь (детерминированный)
fixed_path = bfs_path(obstacleMap, start, goal);
paths_constrained = cell(200, 1);
for i = 1:200
if rand < 0.9 % 90% вероятности идти по навязанному пути
paths_constrained{i} = fixed_path;
else
paths_constrained{i} = var_path(obstacleMap, start, goal, 0.8);
end
end
% Энтропия после
entropy_after(sim) = compute_entropy(paths_constrained);
end
% Результаты
delta_S = mean(entropy_before - entropy_after);
fprintf('\n========== РЕЗУЛЬТАТЫ ==========\n');
fprintf('Средняя энтропия до: %.4f бит\n', mean(entropy_before));
fprintf('Средняя энтропия после: %.4f бит\n', mean(entropy_after));
fprintf('Среднее уменьшение энтропии ΔS_грех = %.4f бит\n', delta_S);
fprintf('================================\n');
% Визуализация
figure('Name', 'Моделирование греха', 'Position', [100, 100, 800, 400]);
subplot(1,2,1);
histogram(entropy_before, 20, 'FaceColor', 'b', 'FaceAlpha', 0.5);
hold on;
histogram(entropy_after, 20, 'FaceColor', 'r', 'FaceAlpha', 0.5);
xlabel('Энтропия (бит)');
ylabel('Частота');
legend('До греха', 'После греха');
title('Распределение энтропии');
grid on;
subplot(1,2,2);
plot(1:N_sim, entropy_before, 'b.', 'MarkerSize', 10);
hold on;
plot(1:N_sim, entropy_after, 'r.', 'MarkerSize', 10);
xlabel('Номер симуляции');
ylabel('Энтропия (бит)');
legend('До греха', 'После греха');
title('Энтропия по симуляциям');
grid on;
disp('Готово!');
% ========================================================================
% ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
% ========================================================================
function [path, found] = bfs_path(map, start, goal)
[rows, cols] = size(map);
dirs = [-1 0; 1 0; 0 -1; 0 1];
queue = start;
visited = false(rows, cols);
visited(start(1), start(2)) = true;
parent = zeros(rows, cols, 2);
found = false;
while ~isempty(queue)
curr = queue(1,:);
queue(1,:) = [];
if isequal(curr, goal)
found = true;
path = goal;
while ~isequal(curr, start)
curr = squeeze(parent(curr(1), curr(2), :))';
path = [curr; path];
end
return;
end
for d = 1:4
nr = curr(1) + dirs(d,1);
nc = curr(2) + dirs(d,2);
if nr>=1 && nr<=rows && nc>=1 && nc<=cols && ~visited(nr,nc) && map(nr,nc)==0
visited(nr,nc) = true;
parent(nr,nc,:) = curr;
queue(end+1,:) = [nr, nc];
end
end
end
path = [];
found = false;
end
function path = var_path(map, start, goal, sigma)
[opt, ok] = bfs_path(map, start, goal);
if ~ok || size(opt,1) <= 2
path = opt;
return;
end
path = opt;
for i = 2:size(path,1)-1
for attempt = 1:10
dr = randi([-round(sigma), round(sigma)]);
dc = randi([-round(sigma), round(sigma)]);
nr = path(i,1) + dr;
nc = path(i,2) + dc;
if nr>=1 && nr<=size(map,1) && nc>=1 && nc<=size(map,2) && map(nr,nc)==0
path(i,:) = [nr, nc];
break;
end
end
end
path = unique(path, 'rows', 'stable');
end
function entropy = compute_entropy(paths)
% Фильтрация пустых путей
valid = ~cellfun(@isempty, paths);
paths_valid = paths(valid);
if length(paths_valid) < 2
entropy = 0;
return;
end
% Создание ключей для путей
keys = cell(length(paths_valid), 1);
for i = 1:length(paths_valid)
p = paths_valid{i};
key = '';
for j = 1:size(p, 1)
key = [key, sprintf('(%d,%d)', p(j,1), p(j,2))];
end
keys{i} = key;
end
% Подсчёт уникальных путей
[~, ~, ic] = unique(keys, 'stable');
counts = accumarray(ic, 1);
probs = counts / sum(counts);
% Энтропия Шеннона
entropy = -sum(probs .* log2(probs));
end
結果の分析:
強制される前、エージェントAはほぼ 最大の自由を 持っていた(エントロピー7.64ビット — すべての200のパスがユニーク)。
「正しい」道を押し付けられた後、エントロピーは崩壊してしまった 0.92ビット選択肢の領域は、一つの支配的な経路と稀な逸脱に縮小されました。
エントロピーの減少 ΔS罪は約6.73 ビットとは 自由への損害の量的な測定、『罪深い』エージェントによって施された
結論: 唯一の道に強制することは、ほぼ完全に選択の自由を破壊する。エントロピーは最大値と比較して88%減少する。これは、地獄の脅威をもって唯一の『正しい』道を強いる伝統的な宗教が、人間の自由に対して犯すとされる 甚大な罪 を数学的に表現している。
本題へ進む。
4.6. 悪の赦しとエントロピーの回復
もし罪がエントロピーの減少であるならば、 赦し — それはその回復である。
私たちの実験では、「罪なき」エージェントが自分の道を押し付けず、エージェントAが再び自由に選択できるよう許したら、エントロピーは元の7.64ビットに戻るだろう。これこそが 赦しである。:自由の回復.
「旅人の信仰」では、許しとは「罰の取り消し」ではなく、 他者の自由を増やす行為である。神は法的意味で罪を許さない。神は、愛と意識によってエントロピーが回復できる世界を作った。
第5部。建築家は空間の創造者(プログラマーではない)
5.1.「神プログラマー」の問題
伝統的な宗教では神はしばしば 全知全能のプログラマーとして描かれ、彼は:
事前に書かれた計画に従って世界を創造した。
全ての未来を知っている(私たちの「自由な」選択を含む)。
いつでも介入し、現実のコードを書き換えることができる。
このモデルは解決不能なパラドックスを生み出します:もし神が全てを知り全てを制御しているならば、 自由意志は幻想である。もし自由が存在すれば、神は либо 知識に欠ける、または力に欠ける。神学者たちはこの矛盾について世紀を超えて悩み、論理的に矛盾のない答えを見出すことができなかった。
「パレマノの信仰――出発」は、 第三の道を提案する、「プログラマー神」のイメージを拒否し、「可能性の空間の設計者」 のイメージを優先する.
5.2. 設計者の形式定義
私たちのモデルにおいて 設計者 は、人格ではなく、審判者でもなく、王座に座る君主でもない。それは オペレーターであり、次のように定義する:
可能性のある軌道の空間 Ω (すべての人生の道の集合)
制約 O (自然法則、社会的規範、病気)
有用性の関数 L (ラグランジュの愛のラグランジュ)
初期条件 A (誕生、初期資金、才能).
境界条件 B (死滅または設定された目標).

建築家 は 具体的な軌道 γ(t)γ(t)を選択しない。彼は創造する 可能性の領域、そこでは人間(エージェント)が自由に自分の道を探している
注記: 物理学との類推:建築家は空間-時間と運動の法則(エイラー=ラグランジュの方程式)を設定するが、粒子の代わりにそれを解決しない。粒子は初期条件と最小作用の原理に従って軌道を選択する
5.3. 伝統的な神義論との比較

5.4. では、なぜ建築家は犠牲を要求しないのか?
伝統的な宗教では神にしばしば「必要」な犠牲、儀式、服従がある。これは、神が 欲求を —崇拝、血、規則の遵守—感じていることを示していることを意味する。
私たちのモデルにおける建築家 は何も必要としません。彼は完璧です。彼は怒りを感じたり、褒めを欲しがったり、競争を恐れたりしません。彼はただ可能性の空間 ΩΩ を創造し、エージェントに選択の自由を与えただけです
。結果として このシステムにおける愛は取引ではありません(「私があなたに従順で、あなたが私に楽園を与える」)ではなく、 存在の自然な性質建築家は「愛しなさい、否則罰する」などとは言わない。彼は「愛は最大の有用性への道である。自分で選びなさい」と言う
5.5. 建築家と悪の問題
建築家が善であるなら、なぜ世界には悪と苦しみがあるのか
「旅人の信仰」の答え:
悪は建築家の過ちの結果ではない。それは 自由選択の結果 エンタロピーを減少させるエージェント(ΔS罪>0)
苦しみは罰ではなく、 情報 である。選択された道は最適化から遠ざかっていることを示している L.
建築家は介入しない。なぜなら、 介入は自由を取り消すからである彼は間違いを犯し、学び、再度試せる空間を作りました。
5.6. 計算的比喩:建築家は環境
想像するに、建築家が 水曜日 (世界)においてエージェントが行動できる場所。それは次のように定義される:
可能性のある軌道の空間 オメガ
制限 オ (障害),
ラグランジアン・オブ・ラヴ L
初期条件 A и B.
しかし彼は 引き起こさない 方法 act() エージェントのために。エージェントが自分で決定を下し、アーキテクトはただ提供するだけです。 ルール と は可能性の空間です.
MATLABでこのアイデアをシミュレートする簡単な実行コードは以下に示されています.
% ========================================================================
% 5.6. Архитектор как среда: агент выбирает путь сам
% ========================================================================
clear; clc; close all; rng(42);
% Создание карты препятствий
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2 || ...
sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5 || ...
sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8 || ...
(X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18)
obstacleMap(i,j) = 1;
end
end
end
start = [N, 1];
goal = [1, N];
% Функции для BFS
function [path, found] = bfs(map, s, g)
dirs = [-1 0; 1 0; 0 -1; 0 1];
queue = s;
visited = false(size(map));
visited(s(1), s(2)) = true;
parent = zeros([size(map), 2]);
found = false;
while ~isempty(queue)
curr = queue(1,:);
queue(1,:) = [];
if isequal(curr, g)
found = true;
path = g;
while ~isequal(curr, s)
curr = squeeze(parent(curr(1), curr(2), :))';
path = [curr; path];
end
return;
end
for d = 1:4
nr = curr(1) + dirs(d,1);
nc = curr(2) + dirs(d,2);
if nr>=1 && nr<=size(map,1) && nc>=1 && nc<=size(map,2)
if ~visited(nr,nc) && map(nr,nc)==0
visited(nr,nc) = true;
parent(nr,nc,:) = curr;
queue(end+1,:) = [nr, nc];
end
end
end
end
path = [];
found = false;
end
function path = var_path(map, s, g, sigma)
[opt, ok] = bfs(map, s, g);
if ~ok || size(opt,1) <= 2
path = opt;
return;
end
path = opt;
for i = 2:size(path,1)-1
for a = 1:10
dr = randi([-round(sigma), round(sigma)]);
dc = randi([-round(sigma), round(sigma)]);
nr = path(i,1) + dr;
nc = path(i,2) + dc;
if nr>=1 && nr<=size(map,1) && nc>=1 && nc<=size(map,2) && map(nr,nc)==0
path(i,:) = [nr, nc];
break;
end
end
end
path = unique(path, 'rows', 'stable');
end
% Архитектор создаёт мир (определяет параметры)
world.Omega = @() var_path(obstacleMap, start, goal, 0.8); % пространство путей
world.O = obstacleMap; % ограничения (препятствия)
world.L = @(path) -size(path,1); % лагранжиан: короткий путь = лучше
world.A = start; % начальные условия
world.B = goal; % цель
% Агент сам ищет путь, максимизирующий полезность
% (Архитектор не вмешивается)
agent_find_path = @(world) world.Omega(); % агент выбирает любой путь из Omega
% Агент действует
path = agent_find_path(world);
% Архитектор лишь наблюдает (или оценивает результат)
if ~isempty(path)
utility = world.L(path);
fprintf('Агент выбрал путь с полезностью: %.2f\n', utility);
fprintf('Длина пути: %d шагов\n', size(path,1));
else
fprintf('Агент не смог найти путь\n');
path = [start; goal];
end
% Визуализация
figure('Name', 'Путь, выбранный агентом', 'NumberTitle', 'off');
imagesc(x, y, world.O');
colormap([1 1 1; 0.5 0.5 0.5]);
axis xy; axis equal;
title('Агент выбрал путь самостоятельно (Архитектор не вмешивался)');
xlabel('X'); ylabel('Y');
hold on;
if ~isempty(path)
plot(path(:,2), path(:,1), 'r-', 'LineWidth', 2, 'Marker', 'o', 'MarkerSize', 4);
end
plot(x(world.A(2)), y(world.A(1)), 'go', 'MarkerSize', 12, 'LineWidth', 2, 'MarkerFaceColor', 'g');
plot(x(world.B(2)), y(world.B(1)), 'ro', 'MarkerSize', 12, 'LineWidth', 2, 'MarkerFaceColor', 'r');
legend('Путь агента', 'Старт', 'Финиш', 'Location', 'best');
hold off;
Агент выбрал путь с полезностью: -53.00
Длина пути: 53 шаговこの結果の意味は何ですか
エージェントは自律的に行動しました. アーキテクチャーはエージェントに道を選ばせる代わりに、環境(空間 Ω、制約)を提供しました O、ラグランジュ関数 L、初期条件と最終条件)。
有用性 = -53.00. 私たちの単純化されたラグランジュ関数 L=−経路の長さ 。負の値は、経路が短いほど有用性が高いことを意味します。数字53は離散グリッド上の経路の長さ(ステップ数)です。
経路の長さ:53ステップ。 これは選択された軌道の客観的な特徴です。比較として:決定論的アルゴリズム(BFS)はおそらくより短い経路を見つけ出すでしょうが、エージェントは 可能な 経路のうち Ωの中から一つを選びましたが、必ずしも最適ではありません.
形而上学的な解釈
建築家は「正しい」経路を強制しません。 より短い道(より高い有用性)が存在する場合でも、エージェントは Ωの中からどれかを選ぶことができます。アーキテクチャは最適でない選択を罰しません.
選択の自由は現実です. エージェントは別の道(別の乱数シード)を選ぶことができ、結果は異なっていました。エントロピー S この実験では依然として高いままであり、パスの分布が均等だからです。
否定的な有益性とは罰ではありません。 これはただ 選択されたパスの客観的な特徴 です。建築家は「あなたは悪く選んだ、今から罰する」とは言いません。ただ「このパスの長さは53ステップである」と断言するだけです。これは自然な結果であり、罰ではありません。
次の部分では行います MATLABにおける完全な計算実験、結合する オーム、エントロピー S、有用性 U、罪です ΔS罪 アーキテクターロールも担い、実際にモデルがどのように機能するかを示します。
それでは、最終実験に到達しました。
第6章 MATLABにおける計算実験
6.1. 実験の目的
前の章では、形式定義を導入しました
可能な軌道の空間 Ω
選択のエントロピー S を自由度の尺度として
愛の効用関数 Uを__γ),
罪 ΔS罪 他のエントロピーの減少のように、
建築家 A 可能性の空間を創造する者として、
今、これらの概念を一つの計算実験で統合し、実際にどのように機能するかを示します.
% ========================================================================
% 6.3. Полный вычислительный эксперимент (ИСПРАВЛЕННЫЙ)
% ========================================================================
clear; clc; close all; rng('shuffle');
% ========================================================================
% 1. Инициализация поля и препятствий
% ========================================================================
N = 30;
x = linspace(0, 20, N);
y = linspace(0, 20, N);
[X, Y] = meshgrid(x, y);
obstacleMap = zeros(N);
for i = 1:N
for j = 1:N
if sqrt((X(i,j)-5)^2 + (Y(i,j)-5)^2) < 2
obstacleMap(i,j) = 1;
end
if sqrt((X(i,j)-12)^2 + (Y(i,j)-12)^2) < 1.5
obstacleMap(i,j) = 1;
end
if sqrt((X(i,j)-17)^2 + (Y(i,j)-7)^2) < 1.8
obstacleMap(i,j) = 1;
end
if X(i,j) > 7 && X(i,j) < 11 && Y(i,j) > 14 && Y(i,j) < 18
obstacleMap(i,j) = 1;
end
end
end
start = [N, 1];
goal = [1, N];
% ========================================================================
% ФУНКЦИИ (определены до вызова)
% ========================================================================
function [path, found] = bfs_path(map, start, goal)
[rows, cols] = size(map);
dirs = [-1 0; 1 0; 0 -1; 0 1];
queue = start;
visited = false(rows, cols);
visited(start(1), start(2)) = true;
parent = zeros(rows, cols, 2);
found = false;
while ~isempty(queue)
curr = queue(1,:);
queue(1,:) = [];
if isequal(curr, goal)
found = true;
path = goal;
while ~isequal(curr, start)
curr = squeeze(parent(curr(1), curr(2), :))';
path = [curr; path];
end
return;
end
for d = 1:4
nr = curr(1) + dirs(d,1);
nc = curr(2) + dirs(d,2);
if nr>=1 && nr<=rows && nc>=1 && nc<=cols && ~visited(nr,nc) && map(nr,nc)==0
visited(nr,nc) = true;
parent(nr,nc,:) = curr;
queue(end+1,:) = [nr, nc];
end
end
end
path = [];
found = false;
end
function path = var_path(map, start, goal, sigma)
[opt, ok] = bfs_path(map, start, goal);
if ~ok || size(opt,1) <= 2
path = opt;
return;
end
path = opt;
for i = 2:size(path,1)-1
for attempt = 1:10
dr = randi([-round(sigma), round(sigma)]);
dc = randi([-round(sigma), round(sigma)]);
nr = path(i,1) + dr;
nc = path(i,2) + dc;
if nr>=1 && nr<=size(map,1) && nc>=1 && nc<=size(map,2) && map(nr,nc)==0
path(i,:) = [nr, nc];
break;
end
end
end
path = unique(path, 'rows', 'stable');
end
function entropy = compute_entropy(paths)
valid = ~cellfun(@isempty, paths);
keys = cell(sum(valid), 1);
j = 1;
for i = 1:length(paths)
if valid(i)
p = paths{i};
key = '';
for k = 1:size(p,1)
key = [key sprintf('(%d,%d)', p(k,1), p(k,2))];
end
keys{j} = key;
j = j + 1;
end
end
[~, ~, ic] = unique(keys, 'stable');
counts = accumarray(ic, 1);
probs = counts / sum(counts);
entropy = -sum(probs .* log2(probs));
end
% ========================================================================
% 2. Генерация пространства Ω (200 путей)
% ========================================================================
num_paths = 200;
sigma = 0.8;
fprintf('Генерация %d путей...\n', num_paths);
paths = cell(num_paths, 1);
for i = 1:num_paths
if mod(i,50)==0, fprintf(' %d/%d\n', i, num_paths); end
paths{i} = var_path(obstacleMap, start, goal, sigma);
end
% ========================================================================
% 3. Энтропия выбора S
% ========================================================================
entropy = compute_entropy(paths);
fprintf('\n========== РЕЗУЛЬТАТЫ ==========\n');
fprintf('Энтропия выбора S = %.4f бит\n', entropy);
% ========================================================================
% 4. Полезность U(γ) (тепловая карта комфорта)
% ========================================================================
comfort = imgaussfilt(randn(N), 3);
comfort = (comfort - min(comfort(:))) / (max(comfort(:)) - min(comfort(:)));
alpha = 0.5;
beta = 1;
U_vals = zeros(num_paths, 1);
for i = 1:num_paths
if ~isempty(paths{i})
idx = sub2ind(size(comfort), paths{i}(:,1), paths{i}(:,2));
U_vals(i) = beta * sum(comfort(idx)) - alpha * size(paths{i}, 1);
else
U_vals(i) = -Inf;
end
end
valid_U = U_vals(U_vals > -Inf);
fprintf('Средняя полезность U = %.4f\n', mean(valid_U));
fprintf('Максимальная полезность U_max = %.4f\n', max(valid_U));
% ========================================================================
% 5. Моделирование греха: принуждение к единственному пути
% ========================================================================
fixed_path = bfs_path(obstacleMap, start, goal);
paths_constrained = cell(num_paths, 1);
for i = 1:num_paths
if rand < 0.9
paths_constrained{i} = fixed_path;
else
paths_constrained{i} = var_path(obstacleMap, start, goal, sigma);
end
end
entropy_c = compute_entropy(paths_constrained);
delta_S = entropy - entropy_c;
fprintf('Энтропия после принуждения S_c = %.4f бит\n', entropy_c);
fprintf('Уменьшение энтропии ΔS_грех = %.4f бит\n', delta_S);
fprintf('Относительное уменьшение: %.1f%%\n', delta_S/entropy*100);
fprintf('================================\n');
% ========================================================================
% 6. Визуализация
% ========================================================================
% Рис. 1: Тепловая карта комфорта и лучший путь
[~, best_idx] = max(U_vals);
best_path = paths{best_idx};
figure('Name', 'Тепловая карта комфорта и лучший путь', 'Position', [100,100,600,500]);
imagesc(x, y, comfort');
colorbar; axis xy; axis equal;
title('Тепловая карта комфорта (светлее = лучше) и путь с max U');
xlabel('X'); ylabel('Y');
hold on;
if ~isempty(best_path)
plot(best_path(:,2), best_path(:,1), 'r-', 'LineWidth', 2);
end
plot(x(start(2)), y(start(1)), 'go', 'MarkerSize', 10, 'LineWidth', 2, 'MarkerFaceColor', 'g');
plot(x(goal(2)), y(goal(1)), 'ro', 'MarkerSize', 10, 'LineWidth', 2, 'MarkerFaceColor', 'r');
legend('Лучший путь', 'Старт', 'Финиш', 'Location', 'best');
% Рис. 2: Распределение полезности
figure('Name', 'Распределение полезности', 'Position', [100,100,600,400]);
histogram(valid_U, 20, 'FaceColor', 'b', 'FaceAlpha', 0.7);
title('Распределение полезности U(γ) среди всех путей');
xlabel('Полезность'); ylabel('Частота'); grid on;
% Рис. 3: Сравнение энтропии до и после греха
figure('Name', 'Влияние греха на энтропию', 'Position', [100,100,500,400]);
bar([entropy, entropy_c], 'FaceColor', [0.3 0.6 0.9]);
set(gca, 'XTickLabel', {'Свобода (S)', 'После греха (S_c)'});
ylabel('Энтропия (бит)');
title(sprintf('Уменьшение энтропии ΔS = %.4f бит', delta_S));
grid on;
% Рис. 4: Два пути — свободный и навязанный
figure('Name', 'Свободный путь vs навязанный', 'Position', [100,100,600,500]);
imagesc(x, y, obstacleMap');
colormap([1 1 1; 0.5 0.5 0.5]);
axis xy; axis equal;
title('Свободный выбор (красный) vs принуждение (синий)');
xlabel('X'); ylabel('Y');
hold on;
if ~isempty(best_path)
plot(best_path(:,2), best_path(:,1), 'r-', 'LineWidth', 2);
end
if ~isempty(fixed_path)
plot(fixed_path(:,2), fixed_path(:,1), 'b--', 'LineWidth', 2);
end
plot(x(start(2)), y(start(1)), 'go', 'MarkerSize', 10, 'LineWidth', 2, 'MarkerFaceColor', 'g');
plot(x(goal(2)), y(goal(1)), 'ro', 'MarkerSize', 10, 'LineWidth', 2, 'MarkerFaceColor', 'r');
legend('Свободный путь', 'Навязанный путь', 'Старт', 'Финиш', 'Location', 'best');
fprintf('\nГотово!\n');

図9エントロピー の比較は明確に示しています: S の高い列(7.64)、__JHSNS_SEG_28dd92f4_828__S__JHSNS_SEG_28dd92f4_829__ 罪の後—ほぼゼロ. (после греха)—ほぼゼロ. 
図10 有用性の分布ヒストグラム は、大多数の経路が有用性が4~6の範囲にあることを示しています。非常に低い値に「外れ値」はありません. 
図11 自由経路対強制経路 は、短いが「情緒的ではない」道徳を強いることは、エージェントにとって実際に重要な価値(快適さ、美しさ、静けさ)を無視していることを示しています。 ======================================== Энтропия выбора S = 7.6439 бит Средняя полезность U = 5.2176 Максимальная полезность U_max = 6.6279 Энтропия после принуждения S_c = 0.6773 бит Уменьшение энтропии ΔS_грех = 6.9665 бит Относительное уменьшение: 91.1% ========================================結果の分析:
1. 空間 Ω とエントロピー S=7.64ビット
200本のユニークな道が生成されました。エントロピーは理論的な限界値 log₂200≈7.64__に達しました。 ビット。
結論: エージェントは持っています 最大限度的選択の自由 制限の範囲内で オすべての利用可能な軌道は等確率です。どの軌道も予め決められていません。
2. 有用 U
平均的な有用性 U=5.22、最大 Umax=6.63. 値のばらつきは、完全な自由な選択がある場合でも、すべての経路が快適さや長さの観点から同じ価値を持っているわけではないことを示しています.
結論として: 自由が平等な意味を意味しない。いくつかの経路は客観的に優れている(より「快適な」ゾーンを通過するが)、設計者はそれらを強制しません.
3. 罪(ΔS罪=6.97 ビット、相対的な減少率91.1%)
唯一の「正しい」道に強制されること(教条に従う確率90%)は、エントロピーの災害的な低下につながった:
罪の前: S=7.64 ビット(最大の多様性)。
罪の後: Sc=0.68 ビット(ほぼ完全な決定論)。
選択の自由は 91.1%減少した.
結果: 罰の脅威で唯一の「正しい」道を強制することは 数学的に測定可能な罪である。アジェント「罪人」(我々の場合では、確定された道に強制するシステム)はほぼ完全に他のアジェントの自由を破壊した。
比較として:完全な決定論(確率100%の1つのパス)では、エントロピーは0に等しく、減少は100%になる。私たちの実験は、90%の強制が91%の自由を抑制するのに十分であることを示した。
4. メタフィジクスの観点からの解釈
建築家は罪を犯さない。 彼は空間を創造した Ω 最大エントロピー(7.64ビット)で。罪を犯すのは、他者に自分の道を押し付けるエージェント(またはシステム)だ。
自由は儚い。 ほぼ完全にそれを破壊するには、90%の教条に従う可能性があれば十分だ。『正しい』道から逸脱した者に地獄を脅かす宗教システムは、まさにこういう強制を生み出す。
罪は測れる。 私たちは、どのシステム(教条、法則、社会的圧力)が選択の自由をどの程度減少させるかを量的に評価することができます。これは「自由の科学」への道を開きます.
6.6. 第6部のまとめ
計算実験は「パルマナの信仰 - 出発」のすべての主要な命題を確認しました.

モデルは形而上学的なものを証明하지 않지만、 作業可能で検証可能な言語を提供합니다 自由、愛、罪について議論するため。誰でもコードを実行し、パラメータを変更し、結果を自分で確認することができます。 そんな長い道のりを経て、ようやく最も重要なものにたどり着きました:結果、私たちが持っているもの。すべてを整理しましょう。
第1部 私たちは変分計算の基礎に没頭し、機能の極値を探すことは単なる技術的課題ではなく、選択の深い比喩であると理解しました。エイラー=ラグランジュの方程式は「最適」な経路を示しますが、厳密に定められた境界条件の下でのみです。境界条件を緩めると、 解の族 — 可能性の空間—
が生じます. 第2章 MATLABで計算実験を行い、確定的アルゴリズム(BFS)が単一の経路を見つける様子と、変分アルゴリズム(ランダム重み付きDijkstra)が 複数の軌道を生成する様子を具体的に観察しました。多様性はバグではなく、機能です。私たちは選択のエントロピー S を自由度の定量的な測度として導入しました 。
第3部分 では 愛の効用関数 U(γ) を定義しました—最適化問題における目標関数の類似物です。 滑らかなラグランジュ関数 (条件なしの愛)と バリア関数の違いを示しました。 (愛は取引であり、地獄の脅威と共に)。実験は、最適な経路は主観的であり、内部の価値システムに依存することを示した。
在 第4章 で、私たちは 罪の新しい定義を提案した — 外部の規則の違反ではなく、他者の選択のエントロピーを減少させる行為として: ΔS罪=S前−S後>0. 実験結果によると、唯一の方法に強制することは破壊的である 91%の自由 選択肢。
В 第5部 私たちは役割を定義しました 建築家 A=⟨Ω, O, L, A, B⟩ — プログラマーとしてではなく、クリエイターとして 可能性の空間。建築家は罰したり、報酬したりしない。彼はただ環境を提供し、待つだけ
。 第6章 では、すべてのコンセプトを総合的な計算実験に統合した。結果は確認した:選択の自由は実際で測定可能であり、罪は量化的な測定値を持つ、愛は滑らかな目標関数として形式化できる。
この6つの部分でわかったことは
自由とは規則の欠如ではなく、変化の余地がある存在である
エントロピー S はその余地を測るもの。決定論(S=0)とは硬い脚本に従った生活である。自由(S>0)とは選択の可能性である条件のない愛とは滑らかな目標関数である
それは誤りに対する無限の罰金を含んでいません。それは地獄を脅迫しません。ただ方向を示すだけです:より自由なこと、より創造的なこと、他の人をより気にかけること.罪とは規則を破ることではなく、他者の自由を減少させることです.
ΔS罪>0. 自分の道を押し付け、脅迫、操作——これらはすべて失われたエントロピーのバイトで測れます.建築家はプログラマでも裁判官でもありません.
彼は可能性の空間、初期条件、そしてルールを作り出しました。しかし、彼は私たちの代わりに選ぶわけではありません。彼は私たちに自由を信頼しています——それが最も高貴な贈り物です.数学は信仰を殺さず、それに言語を与えます.
私たちは「神の存在を証明したわけではありません」。私たちは 機能するモデルを構築しました は、自由、愛、罪について厳格に議論し、空虚な宣言なしに語れる場所です。
この記事は最終的な真実ではありません。これは 論じるための招待です。 考えること、議論すること、検証することを招待しています。
自由をエントロピー、愛を平滑な効用関数、罪を他の選択肢の減少として捉える考え方に共感があれば、私たちは同じ言葉を話しています。
エラーを見つけたり、脆弱な部分を見つけたり、改善点を提案したい場合はご連絡ください。お答えします。競争しますが、気にしないです.
伝統的な宗教的形式があなたに必要な空間を与えないと感じたり、世俗的な視点が問いに答えを与えないと感じる場合、おそらくこの道がお近くにあります。パルマニストの道。
下のリンクをクリックして対話を続けることができます。
私のTelegramチャンネル「Вера Паломника — Исход」 — ここでは、記事に収まらない宣言、思索、新しいアイデアを公開しています.
👉 https://t.me/VerapalomnikaIsxod議論と質問のためのグループ — 質問したい、明確にしたい、議論したい、またはただ意見を言いたい方すべてを歓迎します。非難はありません、トレロリングもしません.
👉 https://t.me/+ApgozeWvVoNjZDZi
最後に、有名なオーストリアの詩人で翻訳家のレーネ・カール・ヴィルヘルム・ヨーゼフ・マリア・リルケの最終的なフレーズで締めくくりたい。彼は『若き詩人への手紙』でこう書いた
「問いに生きること。おそらくその時、あなたは自分でも気づかず、徐々に、遠くから、いつか答えにたどり着くのであろう」.
私は答えを与えない。私は提案する の質問 と 検索ツール はこちらです。残りはあなた次第です.
読み終わってありがとうございました。












