# Додаток B. Матриця відстаней ходу коня

У цьому додатку наведено відстані між клітинками дошки 4×4 з топологією тора. Відстань визначається як мінімальна кількість ходів коня, необхідна для переходу з однієї клітинки в іншу.

## B.1. Загальні властивості

* Кожна клітинка має рівно **4** сусідів на відстані 1 (див. B.2).
* Діаметр графа (максимальна відстань) дорівнює **2**.
* Будь-які дві різні клітинки, які не є сусідами, знаходяться на відстані 2.

## B.2. Сусіди для клітинки a1 (0,0)

Координати клітинок задаються у форматі (рядок, стовпець) з індексами від 0 до 3. Для зручності використовуємо шахову нотацію: стовпці a–d, рядки 1–4.

Вектори ходу коня в класичному розумінні: (dx, dy) ∈ { (±2, ±1), (±1, ±2) }. На торі 4×4 ці вектори обчислюються за модулем 4, що призводить до збігів. Наприклад, (2,1) і (-2,1) ≡ (2,1) mod 4, тому кожна пара векторів, що відрізняються знаком, дає ту саму клітинку. Отже, з клітинки (0,0) отримуємо лише 4 унікальні клітинки:

| Вектор (dx,dy) | Координати | Нотація |
| -------------- | ---------- | ------- |
| (2,1)          | (2,1)      | c2      |
| (2,3)          | (2,3)      | c4      |
| (1,2)          | (1,2)      | b3      |
| (3,2)          | (3,2)      | d3      |

Таким чином, сусіди a1: **c2, c4, b3, d3**.

Завдяки симетрії тора, кожна клітинка має таку саму структуру сусідів, зсунуту відповідно.

## B.3. Відстань між довільними клітинками

Оскільки граф однорідний, відстань між клітинками залежить лише від різниці координат (dx, dy) mod 4 (де dx = (x₂ – x₁) mod 4, dy = (y₂ – y₁) mod 4). Всі ненульові різниці поділяються на дві категорії:

* **Відстань 1**: ті (dx, dy), для яких (dx, dy) або (dy, dx) дорівнює (2,1), (2,3), (1,2) або (3,2) (з точністю до порядку). На практиці це означає, що пара (dx, dy) має один елемент з {1,3} та інший з {2}? Уточнимо: з таблиці нижче видно всі випадки.
* **Відстань 2**: всі інші ненульові різниці.

**Таблиця відстаней для всіх різниць (dx, dy)**:

| dx\dy | 0 | 1 | 2 | 3 |
| ----- | - | - | - | - |
| **0** | 0 | 2 | 1 | 2 |
| **1** | 2 | 2 | 1 | 2 |
| **2** | 1 | 1 | 2 | 1 |
| **3** | 2 | 2 | 1 | 2 |

*Пояснення*: На перетині рядка dx та стовпця dy наведено відстань. Наприклад:

* (dx=2, dy=1) → 1 (c2)
* (dx=1, dy=0) → 2 (a1→b1)
* (dx=2, dy=2) → 2 (a1→c3)
* (dx=3, dy=1) → 2 (оскільки (3,1) ≡ (-1,1) не є (2,1) або (1,2))
* (dx=1, dy=1) → 2

Таблиця симетрична, тому достатньо знати верхній трикутник.

## B.4. Використання таблиці

Щоб знайти відстань між клітинками A (x1,y1) та B (x2,y2), обчисліть:

```
dx = (x2 – x1) mod 4
dy = (y2 – y1) mod 4
```

Знайдіть значення в таблиці за рядком dx та стовпцем dy.

**Приклади**:

* a1 (0,0) до c2 (2,1): dx=2, dy=1 → відстань 1.
* a1 (0,0) до b1 (1,0): dx=1, dy=0 → відстань 2.
* a1 (0,0) до d4 (3,3): dx=3, dy=3 → відстань 2.
* b2 (1,1) до d4 (3,3): dx=2, dy=2 → відстань 2.

## B.5. Діаметр та степінь

* **Діаметр** = 2 (максимальне значення в таблиці).
* **Степінь** кожної вершини = 4 (кількість пар (dx,dy) з відстанню 1, включаючи всі знаки; у таблиці це значення 1 у рядку для фіксованого dx,dy). Завдяки симетрії всі вершини мають однаковий степінь.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nautilus-3.gitbook.io/subit64/aether-tour/docs/compedium/appendices/b_knight_distance_matrix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
