跳转至

Lec 6. Backtracing

约 78 个字 29 行代码 预计阅读时间 1 分钟

一些数学

Tip

\(n \to +\infty\) 时,对于常数 \(a > 1\),有

\[ n^a \ll a^n \ll n! \ll n^n. \]

其中 \(f(n) \ll g(n)\) 表示 \(\lim_{n \to \infty} \frac{f(n)}{g(n)} = 0\),即 \(f(n) = o(g(n))\)

Tip

推论:

\[ \log{n!} = o(n \log{n}). \]

Turnpike Reconstruction Problem

WIP

Alpha-beta Pruning

推荐阅读

Example
int alphabeta(Node* node, int alpha, int beta, int is_max) {
    if(node->is_leaf) return node->value;

    if(is_max) {
        // max node
        for(int i = 0; i < node->child_amount; i ++) {
            Node* child = node->children[i];
            alpha = max(alpha, alphabeta(child, alpha, beta, !is_max));
            if(alpha >= beta) break;
        }
        return alpha;
    } else {
        // min node
        for(int i = 0; i < node->child_amount; i ++) {
            Node* child = node->children[i];
            beta = min(beta, alphabeta(child, alpha, beta, !is_max));
            if(alpha >= beta) break;
        }
        return beta;
    }
}

int main() {
    Node *root = read_tree();
    int result = alphabeta(root, INT_MIN, INT_MAX, 1);
    printf("%d\n", result);

    return 0;
}

评论区