fork download
  1. import numpy as np
  2.  
  3. # Узлы (32 узла для "Логической лампы")
  4. nodes = [
  5. "T", "AT", "S", # Тезис, Антитезис, Синтез
  6. "A1", "A2", "A3", "A4", # Логические вершины квадрата оппозиции
  7. "M1", "M2", "M3", "M4", # Модальные вершины
  8. "P1", "P2", "P3", "P4", # Вероятностные вершины
  9. # Дополнительные вершины (всего 32, добавляем по необходимости)
  10. ]
  11.  
  12. # Матрица смежности (32x32) для связей
  13. # Пример: T -> S, T -> A1, AT -> S, ...
  14. adj_matrix = np.zeros((32, 32))
  15.  
  16. # Установим связи (1 = связь существует)
  17. # Пример: Тезис связан с синтезом, и так далее
  18. adj_matrix[0, 2] = 1 # T -> S
  19. adj_matrix[1, 2] = 1 # AT -> S
  20. adj_matrix[0, 3] = 1 # T -> A1
  21. adj_matrix[1, 4] = 1 # AT -> A2
  22.  
  23. # Задаем начальные значения узлов (1 = истина, 0 = ложь)
  24. values = np.zeros(32)
  25. values[0] = 1 # Тезис истинный
  26. values[1] = 0 # Антитезис ложный
  27.  
  28. # Логические правила
  29. def calculate_values(adj_matrix, values):
  30. new_values = values.copy()
  31. for i in range(len(values)):
  32. for j in range(len(values)):
  33. if adj_matrix[i, j] == 1: # Есть связь
  34. if values[i] == 1: # Пример: Истинный узел влияет на связанный
  35. new_values[j] = 1 # Применяем правило
  36. elif values[i] == 0: # Пример: Ложный узел влияет
  37. new_values[j] = 0 # Применяем правило
  38. return new_values
  39.  
  40. # Итеративный расчет до стабилизации
  41. prev_values = values
  42. while True:
  43. new_values = calculate_values(adj_matrix, prev_values)
  44. if np.array_equal(new_values, prev_values):
  45. break
  46. prev_values = new_values
  47.  
  48. # Вывод финальных значений
  49. result = {nodes[i]: new_values[i] for i in range(len(nodes))}
  50. result
Success #stdin #stdout 0.12s 28752KB
stdin
Standard input is empty
stdout
Standard output is empty