# TensorLogicにおける最短経路探索

この例では、**トロピカル行列論理（Tropical Matrix Logic）**、別名 **min-plus代数** を使用して、グラフの最適化問題（最短経路）を解く方法を示します。

## コンセプト: トロピカル半環 (Tropical Semiring)

通常の行列積では `(+, *)` の演算ルール（半環）を使用します。また、家系図のような論理推論ではブール代数の `(OR, AND)` を使用します。

**最短経路問題** では、**トロピカル半環** `(min, +)` を使用します：
- **「加算」** に相当する操作 → `min` (最小値)
- **「乗算」** に相当する操作 → `+` (重みの合計)

この代数系における「行列積」を計算することは、エッジをつなぎ合わせてノード間の最短距離を見つけることに相当します。

## アルゴリズム

隣接行列 $A$ に対して、トロピカル半環上での「行列積」を繰り返し適用することで、全点対最短経路（Floyd-Warshall法と同様の結果）を計算できます。
正の重みを持つグラフでは、ノード数 $N$ 回の反復で収束します。

TensorLogicでの実装（テンソル内包表記）:
```rust
// トロピカル行列積
// C[i, j] = min_k ( A[i, k] + B[k, j] )
let C = [i, j, k | ... { A[i, k] + B[k, j] }].min(2);
```

## 使い方

```bash
cargo run --release --bin tl -- examples/tasks/logic/shortest_path/shortest_path.tl
```
