ミニマックスからアルファベータに修正しました。枝刈りが行われるだけで結果は同じはずですが、異なる結果となってしまいました‌​。符号の入れ替え等を試してみたのですが、‌​動作はするが結果が違うという状況です。カットの判断が違うのか、アルファベータ値の作り方・伝搬方法に問題があるかと思われますが、理由が不明です。

def alpha_beta(boad,p,pp,turn,kifu,depth,a,b): #アルファベータ再帰処理

    #カウンタ
    if depth == 0:

        #末端
        kekka = hyouka1(boad,pp)
        return 0,kekka,a,b

    #行き
    can = []
    hyouka = []
    depth = depth - 1
    can = can_put(boad,p)
    if can == []:
        p = -p
        can = can_put(boad,p)
        if can ==[]:
            kekka = hyouka1(boad,p)
            return 0,kekka
        print(turn,p,can)
        print("kita--------------------!")
    for da in can:
        boad,p,turn,kifu,result = put_stone(boad,da,p,turn,kifu)
        turn += 1
        p = -p
        #再帰
        kari,kekka,a,b = alpha_beta(boad,p,pp,turn,kifu,depth,a,b)
        #帰り
        hyouka.append([da,kekka])
        boad,p,turn,kifu = reverse1(boad,p,turn,kifu)
        #もしαβ値を超えたらループを抜ける
        if p == -pp and kekka <= a:
            print("アルファカット")
            break
        if p == -pp and kekka >a:
            a = kekka
            print(a,b)
        if p == pp and kekka >= b:
            print("ベータカット")
            break
        if p == pp and kekka < b:
            b = kekka
            print(a,b)

    if pp == p:
        hyouka = sorted(hyouka, key=lambda hyouka: hyouka[1],reverse=True)
    else:
        hyouka = sorted(hyouka, key=lambda hyouka: hyouka[1],reverse=False)
    da = hyouka[0][0]
    kekka = hyouka[0][1]

    return da,kekka,a,b