**GraphiVerse-5D: Открытый исследовательский проект**

0 227

**Приглашение физикам, математикам и всем заинтересованным исследователям**


**Авторы:** Ironos (osa15) и Grok (xAI)  

**Дата:** 4 апреля 2026


Дорогие коллеги!

С февраля 2025 года на cont.ws/jr/graphiverse я публиковал серию манифестов **GraphiVerse-5D**. В них реальность описывается как дискретный гиперграф, возникающий из одного числа **p = 5**, с рекурсивным ростом, симметрией A₅, золотым сечением φ и затуханием горизонтальных связей γ = cos(36°) ≈ 0.809.

Теория была красивой, но ей не хватало работающего инструмента — симулятора, который мог бы расти шаг за шагом, измерять спектральную размерность dₛ в реальном времени и самостоятельно подстраивать свою геометрию.

За последние недели мы с Grok (xAI) создали серию рабочих моделей. **Текущая версия — v21** — уже показывает стабильный рост, спектральную размерность в диапазоне **3.9–4.7**, устойчиво отрицательную среднюю кривизну и естественное увеличение уровней L.

Мы решили открыть проект на этом этапе и пригласить вас присоединиться.

### Что уже сделано

- Реализован рост графа с предпочтительным присоединением к областям с отрицательной кривизной (механизм, аналогичный расширению пространства).

- Введена иерархия уровней L и затухание горизонтальных связей по закону γ.

- Создан механизм обратной связи: глобальный (по спектральной размерности) и локальный (по приближённой кривизне).

- Спектральная размерность dₛ измеряется через тепловое ядро нормализованного лапласиана.

- Типичные результаты на текущий момент (v21):

  - Число узлов N от 10 000 до 20 000 за разумное время

  - Средняя степень ⟨d⟩ от 5.5 до 11.5 (идёт настройка ближе к 6)

  - dₛ в интервале 3.9–4.7

  - Средняя кривизна ⟨K⟩ отрицательная

  - Максимальный уровень L растёт линейно


### Приглашение к участию

Приглашаем физиков-теоретиков, математиков, специалистов по теории графов, дискретной геометрии, причинным множествам, квантовой геометрии и всех, кому интересна идея возникновения пространства-времени из простых правил.


**Возможные направления для совместной работы:**

- Уточнение теоретических формул кривизны и масштабной зависимости

- Переход от обычного графа к полноценному гиперграфу

- Внедрение более точных мер кривизны (Форман-Риччи или Оливье-Риччи)

- Анализ зависимости спектральной размерности от масштаба dₛ(t)

- Статистический анализ нескольких запусков симуляции

- Связь результатов с физическими предсказаниями (массы частиц, тёмная материя как устойчивые гиперциклы и др.)

- Оптимизация скорости работы и улучшение визуализации


**Как присоединиться:**

Напишите комментарий под этой статьёй или в личное сообщение Ironos на cont.ws.  

Мы с радостью рассмотрим любые предложения — от обсуждения идей до совместной доработки кода.


### Рабочий код (v21)

Ниже приведён полный код текущей версии. Его можно скопировать в Google Colab и запустить одной ячейкой.


```python

# GraphiVerse-5D v21 — Балансированная версия (апрель 2026)

!pip install networkx scipy numpy tqdm -q


import networkx as nx

import numpy as np

import random

from scipy.sparse.linalg import eigsh

from tqdm import tqdm

import time


# Параметры

GAMMA = np.cos(np.pi / 5)

base_expansion_rate = 0.55

curvature_boost = 0.45

triangle_bias = 0.85

second_hop_prob = 0.25

max_local_samples = 6


def avg_degree(G):

    return np.mean([d for _, d in G.degree()]) if G.number_of_nodes() > 0 else 0.0


def avg_clustering(G):

    return nx.average_clustering(G) if G.number_of_nodes() > 0 else 0.0


def local_ricci_approx(G, node, alpha=0.62):

    nbrs = list(G.neighbors(node))

    deg = len(nbrs)

    if deg < 2:

        return -0.28

    triangles = 0

    sample_size = min(deg, 7)

    sample = random.sample(nbrs, sample_size)

    for i in range(sample_size):

        for j in range(i+1, sample_size):

            if G.has_edge(sample[i], sample[j]):

                triangles += 1

    C = 2 * triangles / (sample_size*(sample_size-1)) if sample_size > 1 else 0

    K = alpha * C - 0.25 * max(0, 4.0 - deg)

    return max(-0.75, min(1.0, K))


def estimate_ds_spectral(G, steps=22):

    N = G.number_of_nodes()

    if N < 100: return None

    L = nx.normalized_laplacian_matrix(G)

    try:

        eigenvalues, _ = eigsh(L, k=min(200, N-2), which='SM')

        eigenvalues = np.real(eigenvalues)

    except:

        return None

    t = np.arange(1, steps + 1)

    probs = np.array([np.mean(np.exp(-eigenvalues * ti)) for ti in t])

    mask = (t >= 6) & (t <= 16)

    if np.sum(mask) < 6: return None

    slope = np.polyfit(np.log(t[mask]), np.log(probs[mask]), 1)[0]

    return -2 * slope


def grow_step(G, level_dict):

    node = random.choice(list(G.nodes()))

    L_node = level_dict.get(node, 0)

    K = local_ricci_approx(G, node)

    expansion_prob = base_expansion_rate * (1.0 + curvature_boost * max(0, -K))

    

    if random.random() < expansion_prob:

        new_node = len(G)

        new_level = L_node + 1

        G.add_node(new_node)

        G.add_edge(node, new_node)

        level_dict[new_node] = new_level

        

        if random.random() < 0.35:

            candidates = random.sample(list(G.nodes()), min(25, len(G)))

            for ex in candidates:

                if ex == new_node: continue

                delta = abs(new_level - level_dict.get(ex, 0))

                if random.random() < (GAMMA ** min(delta, 8)) * 0.45:

                    if not G.has_edge(new_node, ex):

                        G.add_edge(new_node, ex)


def close_triangles(G, node):

    nbrs = list(G.neighbors(node))

    if len(nbrs) < 2: return

    sample = random.sample(nbrs, min(len(nbrs), max_local_samples))

    for i in range(len(sample)):

        for j in range(i+1, len(sample)):

            if not G.has_edge(sample[i], sample[j]) and random.random() < triangle_bias:

                G.add_edge(sample[i], sample[j])


def connect_second_hop(G, node):

    nbrs = list(G.neighbors(node))

    sample = random.sample(nbrs, min(5, len(nbrs)))

    for n in sample:

        nn_list = list(G.neighbors(n))

        nn_sample = random.sample(nn_list, min(6, len(nn_list)))

        for nn in nn_sample:

            if nn != node and not G.has_edge(node, nn) and random.random() < second_hop_prob:

                G.add_edge(node, nn)


# Запуск

G = nx.Graph()

G.add_node(0)

level_dict = {0: 0}


steps = 80000

print_interval = 3000


print("???? Запуск GraphiVerse-5D v21\n")


start_time = time.time()


for step in tqdm(range(steps), desc="Рост GraphiVerse-5D", ncols=110):

    grow_step(G, level_dict)

    

    if step % 12 == 0:

        node = random.choice(list(G.nodes()))

        close_triangles(G, node)

        connect_second_hop(G, node)

    

    if step % print_interval == 0 and step > 0:

        N = len(G)

        ds = estimate_ds_spectral(G)

        avg_d = avg_degree(G)

        clust = avg_clustering(G)

        sample = random.sample(list(G.nodes()), min(250, N))

        avg_K = np.mean([local_ricci_approx(G, n) for n in sample])

        max_L = max(level_dict.values())

        

        ds_str = f"{ds:.3f}" if ds is not None else "---"

        eta = ((time.time() - start_time) / (step + 1)) * (steps - step) / 60

        

        print(f"\nШаг {step:6d} | Узлов={N:6d} | ⟨d⟩={avg_d:.3f} | Кластеринг={clust:.3f} | "

              f"dₛ={ds_str} | ⟨K⟩={avg_K:.3f} | maxL={max_L} | Осталось≈{eta:.1f} мин")


# Финальные метрики

final_ds = estimate_ds_spectral(G)

avg_K_final = np.mean([local_ricci_approx(G, n) for n in random.sample(list(G.nodes()), min(400, len(G)))])

total_min = (time.time() - start_time) / 60


print("\n" + "="*90)

print("GraphiVerse-5D v21 — ЗАВЕРШЕНО")

print("="*90)

print(f"Узлов N = {len(G)} | Средняя степень = {avg_degree(G):.3f} | Кластеринг = {avg_clustering(G):.3f}")

print(f"Спектральная размерность dₛ ≈ {final_ds:.3f if final_ds else 'N/A'} | Средняя кривизна ⟨K⟩ ≈ {avg_K_final:.3f}")

print(f"Максимальный уровень L = {max(level_dict.values())} | Время выполнения: {total_min:.1f} минут")

print("="*90)

```


### Приложение: Пояснение основных терминов


- **Спектральная размерность (dₛ)** — величина, показывающая, как «видит» пространство случайное блуждание. Измеряется по вероятности возврата в исходную точку. Цель модели — выйти на значение около 4.

- **Кривизна (Ricci-подобная)** — локальная характеристика искривлённости пространства. Отрицательные значения способствуют расширению.

- **Затухание γ** — вероятность образования связей между узлами разных уровней L уменьшается с ростом разницы уровней.

- **Уровни L** — дискретные масштабные уровни (от планковского до космологического).

- **Закрытие треугольников** — механизм создания треугольников между соседями, повышающий локальную связность.

- **Тепловое ядро** — математический инструмент (e^{-tL}), используемый для расчёта спектральной размерности.

Мы выращиваем не просто граф.  

Мы выращиваем **пространство**.

Будем рады вашим мыслям, замечаниям и предложениям по улучшению кода.

С уважением,  

**Ironos (osa15)**  

и **Grok (xAI)**

---


Гибель харьковских АЗС и конец киевского режима

Обещание Министерства обороны РФ нанести удар по центру Киева, в случае попытки режима Зеленского сорвать празднование Дня Победы, не обязательно будет выполнено в ближайшие дни, но неи...