---
title: "接入接口"
description: "把 ArcTN 作为路径优化器或收缩树来源接入现有 Python 张量网络工作流。"
eyebrow: "API Reference"
---

## 作为 opt\_einsum PathOptimizer {#optimizer}

```python
import opt_einsum as oe
from arctn import ArcTNOptimizer

optimizer = ArcTNOptimizer(
    preset="heavy", seed=0, max_time=30,
    flops_weight=1, read_write_weight=64,
)
result = oe.contract(equation, *arrays, optimize=optimizer)
```

> **接口边界**
>
> opt\_einsum 直接调用 `ArcTNOptimizer.__call__`，其 PathOptimizer 协议只能返回 path，不能同时返回 sliced legs。非 None 的 `memory_limit` 会抛出 `NotImplementedError`；需要切片时，应走 Cotengra/Quimb 的 `search()` tree dispatch，或直接使用 `arctn_tree` / `arctn_contract`。

## 返回 Cotengra ContractionTree {#tree}

```python
from arctn import arctn_plan, arctn_tree

tree, info = arctn_tree(
    inputs, output, size_dict,
    preset="heavy", seed=0,
    target_size=2**24, slicing_mode="fixed",
    return_info=True,
)
result = tree.contract(arrays)

# 先生成计划；随后转换为树时不重新寻路
plan = arctn_plan(
    inputs, output, size_dict,
    target_size=2**24, slicing_mode="fixed",
)
same_plan_tree = plan.to_tree()
```

`ArcTNOptimizer.search()` 和 `arctn_tree()` 都会当场运行 planner；`plan.to_tree()` 只转换已经保存的路径和 sliced legs。三者得到的都是 Cotengra ContractionTree，而不是 TreeSA 算法或 Rust 的 `arctn::tree` 模块。

## 在 Quimb 中使用 {#quimb}

Quimb 使用同一个 `ArcTNOptimizer.search()` 收缩树接口。网络构造、化简与切片收缩的完整示例见教程。

- [完整 Quimb 教程](/docs/tutorial-quimb) — Circuit、任务化简、切片与手工 TensorNetwork

## 显式选择数组后端 {#backend}

使用 `arctn_contract` 时，可以选择 `native` 或显式指定数组后端。通过 Quimb 或 Cotengra 收缩树执行时，使用相应库的执行接口。

- [执行后端](/docs/execution-backends) — 支持的后端、数组类型和计时说明。

## 相关页面 {#related}

- [Python API](/docs/python-api)
- [执行计划](/docs/execution-plan)
- [执行后端](/docs/execution-backends)
- [切片执行](/docs/slicing-execution)
