Эту проблему можно рассматривать как ориентированный граф, где ребро от вершины A
до другой вершины B
представляет грузовик, идущий от A
до B
(или производитель, желающий перевезти груз от A
до B
), а вес кромки можно использовать для представления величины нагрузки (или грузоподъемности).
Вы можете использовать матрицу смежности для каждого производителя и перевозчика. Каждый раз, когда новая запись заполняется в любой из матриц (скажем, в матрице производителя), соответствующая запись проверяется, проверяется в другой матрице (матрице транспортера), и нагрузки также сравниваются, чтобы увидеть, есть ли совпадение.
```python
class trans_struct(T_ID, T_Type, T_Length, Trucks, Price):
def __init__(self, T_ID, T_Type, T_Length, Trucks, Price)
self.T_ID = T_ID
self.T_Length = T_Length
self.T_Trucks = T_Trucks
self.T_Type = T_Type
self.T_Price = T_Price
class man_struct(M_ID, M_Type, T_Length, Trucks, Loading_Time):
def __init__(self, M_ID, M_Type, T_Length, Trucks, Loading_Time)
self.M_ID = M_ID
self.T_Length = T_Length
self.T_Trucks = T_Trucks
self.T_Type = T_Type
self.T_Price = T_Price
dicti = {A:0, B:1, C:2} #dictionary to map places to integeral indexes
num_places = len(dicti)
trans_mat = [[[] for __ in range(num_places)] for _ in range(num_places)] #initialize transport matrix to a default value
manf_mat = [[[] for __ in range(num_places)] for _ in range(num_places)]
def manf_input():
#take input for manufacturer's data in this func into the structure object
manf_mat[dicti[A]][dicti[B]].append((struct.T_Weight, struct)) #assuming manufacturer wanted to move goods from A to B
check_for_match(A, B) #function to compare corresponding matrix entries each time a new entry is inserted
def check_for_match(A, B, T_Length):
for entry in trans_mat[dicti[A]][dicti[B]]:
if entry[0]>= T_Length:
#match found display required info by retreiving from the structure
#
```
Я написал здесь только некоторые функции. Я написал только функцию, которая проверяет, когда создается новая запись для производителя, но не наоборот. Вы можете добавить дополнительные ограничения, такие как дата, время и т. Д.