見出し画像

AIによる動的計画法の説明

動的計画法は、問題をより小さな部分問題に分割し、各部分問題を 1 回だけ解決することによって問題を解決する方法です。

各部分問題の解はテーブルに格納され、他の部分問題の解法に再利用できます。

これにより、冗長な計算が回避され、アルゴリズムの効率が大幅に向上します。

以下は、Python で動的プログラミングを使用して、特定の量の変更を行うために必要な最小コイン数を見つける問題を解決する例です。

def min_coins(coins, amount):
    table = [float('inf')] * (amount + 1)
    table[0] = 0
    for i in range(1, amount + 1):
        for j in range(len(coins)):
            if coins[j] <= i:
                sub_res = table[i - coins[j]]
                if sub_res != float('inf') and sub_res + 1 < table[i]:
                    table[i] = sub_res + 1
    return table[amount]

coins = [1, 3, 4]
amount = 6
print("Minimum coins required is", min_coins(coins, amount))

この例では、関数はコインの金種と金額min_coinsのリストを入力として受け取り、テーブルを使用して、考えられるそれぞれの釣り銭に必要なコインの最小数を格納します。

外側のループは可能なすべての変化量を反復し、内側のループはすべての硬貨の額面を反復します。

各ステップで、関数は現在のコインの額面が以下かどうかをチェックします。

この記事が気に入ったらサポートをしてみませんか?