-
サブ配列:
- サブ配列は、元の配列内の連続した要素の部分集合です。
- たとえば、配列[1, 2, 3, 4]のサブ配列には[1, 2]、[2, 3, 4]、[3, 4]などがあります。
- サブ配列の要素の順序は重要であり、連続している必要があります。
- サブ配列の分析には、主にスライディングウィンドウ法や動的計画法が使用されます。
-
サブシーケンス:
- サブシーケンスは、元のシーケンス内の要素の部分集合です。
- シーケンス内の要素は連続している必要はありません。
- たとえば、文字列「abcd」のサブシーケンスには、「a」、「b」、「cd」、「abd」などがあります。
- サブシーケンスの要素の順序は重要であり、元のシーケンス内での相対的な順序を保持する必要があります。
- サブシーケンスの分析には、主に動的計画法や再帰的なアプローチが使用されます。
分析方法の例として、以下にいくつかのコード例を示します。
-
サブ配列の最大和を見つける:
def find_maximum_subarray_sum(nums): max_sum = float('-inf') current_sum = 0 for num in nums: current_sum = max(num, current_sum + num) max_sum = max(max_sum, current_sum) return max_sum
-
最長共通部分列を見つける:
def find_longest_common_subsequence(str1, str2): m = len(str1) n = len(str2) dp = [[0] * (n + 1) for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n + 1): if str1[i - 1] == str2[j - 1]: dp[i][j] = dp[i - 1][j - 1] + 1 else: dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) return dp[m][n]
これらは、サブ配列とサブシーケンスの分析に関連するいくつかの一般的な例です。他にもさまざまなアルゴリズムや手法がありますが、このブログ投稿ではこれらの例を取り上げて説明します。