Имам два много дълги O(100k) списъка с думи и трябва да намеря всички подобни двойки. Моето решение има времева сложност O(n*m). Това ли е начин за оптимизиране на този алгоритъм - намаляване на неговата сложност?
def are_similar(first, second):
threshold = 0.88
return difflib.SequenceMatcher(a=first.lower(), b=second.lower()).ratio() > threshold
list_1 = ["123456","23456", ...] # len(list_1) ~ 100k
list_2 =["123123","asda2131", ...] # len(list_2)~ 500k
similar = []
for element_list1 in list_1:
for element_list2 in list_2:
if are_similar(element_list1,element_list2 ):
similar.append((element_list1,element_list2 ))
print (similar)
Кой е най-добрият начин за паралелизиране на горния код? Текущата ми реализация, която не е включена, използва мултипроцесиране. Обединяване на първия цикъл.
are_similar
? Това еare_similar(x, y) == are_similar (y, x)
? - person Elmex80s   schedule 06.02.2018