Ich habe eine Liste von Listen. L1 = [[...] [...] [.....] .....] Wenn ich alle Elemente nach dem Reduzieren der Liste und Extrahieren von eindeutigen Werten nehme, dann erhalte ich eine Liste L2 . Ich habe eine andere Liste L3, die eine Teilmenge von L2 ist.algorithm- zum Zählen von paarweisen gegenseitigen Vorkommen
Ich mag das paarweise gegenseitige Vorkommen der Elemente der L3 in L1 zu finden. Die Beziehung ist nicht gerichtet. dh a, b ist gleich wie b, a
EG- L1 = [[abcd] [abdgf] [cdg] [dg] ....] L2 = [abcdgf] sagen L3 = [cdg]
Ich möchte paarweise gemeinsame Vorkommen von L3 in L1 finden. d.h. diese Werte. c, d: 2 d, g: 3 c, g: 1
Ich erhalte O (n * n * m * p); wo- Nr. von Listen in L1, m - avg. Nein. von Elementen in jeder Liste von L1. n - nein. von Elementen in L3.
Kann ich eine verbesserte Komplexität erhalten?
-Code für oben in Python ist:
Hier sig_tags ist L3 und Tags L1 ist.
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
Wenn also der L3 10 Buchstaben enthält, sollte er alle Paare aus den 10 Buchstaben ausdrucken? 45 Paare? –
ja, sollte es alle 45 Paare haben. –
Ich glaube nicht, dass Sie dann die Komplexität verbessern können. Es wird n * (n-1)/2 Paare geben, was O (n²) ist und du musst mindestens alle Elemente in L1 lesen, so dass es O (n2m) ist, was du hast. Vielleicht könnten Sie, wenn Sie Ihren Algorithmus teilen, einen Blick darauf werfen und Verbesserungen anbieten. –