例。グループ化されたデータと線形データを効率的に照合する方法
私は2つのデータセットを持っています。 linear_dataとgrouped_dataとしましょう。
linear_dataは1 - 1, 1 - 2, 1 - 3, 2 - 3, 2 - 4, 3 - 6
と同じです。 (注:表現の目的のために使用される表記法は、注文IDのようなものです「 - 」プロダクトID)
私はgrouped_dataと、このデータと一致する必要が {1 - 1,2,3}, {2 - 3,4}
ようなルールが含まれている(注:表現の目的のために使用される表記は「ルールIDのようなものです - "プロダクトIDの注文リスト)
ルールの最大値は4です。いくつかのプロダクトIDにはルールが関連付けられていないことがあります。たとえば。ここでは、プロダクトID 6にはルールが関連付けられていません。
この2つのデータセットを照合し、完全に一致するルールセットを取得したいと考えています。
私の現在の実装では、
new_data = group linear_data by Order ID
iterate over new_data
permuted_data = create permutation of all Product Id in current Order
matched_rules = {}
for each permuted_data
for each group_data
if match
matched_rules.add(group_data.Rule_Id)
end
end
end
のようなものですが、このシナリオを実装するには、このアプローチの効率的な方法ですか?この問題を解決するのに最適なアルゴリズムは何ですか?
これはあまりにも部分的ルールの一致を返します。 linear_dataに '' '1 - 1、1 - 2'''が含まれていれば、それはどのルールにも完全に一致しないので、ルールを返すべきではありません。 –
しかし、ありがとう。私はあなたのアルゴリズムからアプローチを得ました。規則の逆マッピングは、一致させる必要がある規則の削減に役立ちます –