Cần giúp đỡ về AvgSim ạ

Chào mọi người ạ, em mới học Python và đang làm bài tập lớn liên quan tới thằng AvgSim này (http://www.jatit.org/volumes/Vol84No1/12Vol84No1.pdf). Em thấy họ có 2 cách là tính ma trận xác suất nhưng phần thuật toán em không hiểu nên là em sử dụng công thức để tính. Ví dụ em muốn tính theo đường sau

và đây là code của em tính theo đường A->F :

arr = np.where(matrix_a == 1)
listOfCoordinates = list(zip(arr[0], arr[1]))  
arr2 = np.where(matrix_b == 1)
listOfCoordinates2 = list(zip(arr2[0], arr2[1]))
arr3 = np.where(matrix_c == 1)
listOfCoordinates3 = list(zip(arr3[0], arr3[1]))

listAB = [item[1] for item in listOfCoordinates if item[0] == 1]       # item[0] == 1: app 1

rwBF = 0      
for i in listAB:
    listBC = [item[1] for item in listCoordinate if item[0] == i]
    rwCF = 0       
    if listBC:
        for j in listBC:
            listCD = [item[1] for item in listCoordinate2 if item[0] == j]
            if listCD:
                rwDEF = 0
                for k in listCD:
                    listDE = [item[1] for item in listCoordinate if item[0] == k]
                    if listDE:
                        rwDEF += len(set(listDE) & set(listEF)) / len(listDE)
                rwCF += rwDEF / len(listCD)
        rwBF += rwCF / len(listBC)
result = rwBF / len(listAB)

Em muốn hỏi là có cách nào làm cho nó chạy nhanh hơn không ạ vì khi em sử dụng với khoảng 500 app và 800 api thì có vẻ nó không hoạt động trong khi em test thử với 2 app và khoảng 10api thì vẫn ra kết quả. Hay có ai biết thuật toán tìm ma trận xác suất như trong trang pdf trên thì hướng dẫn giúp em với ạ. Full code của em ở đây ạ https://github.com/PearKMA/AvgSim.git