私はリストのリストを持っています。 L1 = [[...] [.....] [.....] .....] リストを平坦化してからすべての要素を取り出し、そこから一意の値を抽出すると、リストL2が得られます。 私はL2のいくつかのサブセットである別のリストL3を持っています。アルゴリズム - 対の相互発生をカウントするため
私は、L1のL3の要素のペアごとの相互出現を見出したいと思います。関係は無向である。すなわち、bが、
EG-L1 = Bと同じである[ABCD] [abdgf] [CDG] [DG] ....] L2 = [abcdgf] はL3 = [CDG]を言います
L1でL3のペアの賢明な相互出現を見つけたいと思います。すなわちこれらの値。 C、D:2 D、G:3 C、G:1
Iは、O(N×n個×m個* pを)取得しています。どこにでもあります。 L1、m - 平均のリストの数。いいえ。 L1の各リスト内の要素の数。 n - no。 L3の要素の
複雑性は改善できますか?上記Pythonで用
コードである:ここ
はsig_tags L3とタグがL1です。
x=[]
for i in range(len(sig_tags)):
for j in range(i+1,len(sig_tags)):
count=0
for k in tags:
if (sig_tags[i] in k) and (sig_tags[j] in k):
count+=1
if count>param:
x.append([sig_tags[i],sig_tags[j],count])
return x
L3に10文字入っている場合は、10文字のうちすべてのペアを印刷する必要がありますか? 45ペア? –
はい、すべて45ペアあります。 –
私はあなたが複雑さを改善できるとは思わない。 O(n²)のn *(n-1)/ 2のペアがありますので、少なくともL1のすべての要素を読み込んで、O(n²m)というものを持っている必要があります。たぶんあなたがアルゴリズムを共有していれば、私たちは見て改善を提案するかもしれません。 –