itertools.permutations(iterable, r=None) #Генерирует все возможные перестановки элементов из итерируемого объекта длиной r. Если r не указано, используется длина итерируемого объекта.
itertools.combinations(iterable, r) #Генерирует все возможные комбинации элементов из итерируемого объекта длиной r. В отличие от перестановок, порядок элементов в комбинациях не важен.
itertools.combinations_with_replacement(iterable, r) #Генерирует все возможные комбинации элементов из итерируемого объекта длиной r, где элементы могут повторяться
itertools.product(*iterables, repeat=1) #Генерирует декартово произведение входных итерируемых объектов. Это эквивалентно вложенным циклам.
from collections import deque
def bfs_adj_matrix(matrix, start):
n = len(matrix)
visited = [False] * n
queue = deque([start])
visited[start] = True
while queue:
vertex = queue.popleft()
print(vertex, end=" ")
for neighbor in range(n):
if matrix[vertex][neighbor] == 1 and not visited[neighbor]:
visited[neighbor] = True
queue.append(neighbor)
# Пример матрицы
matrix = [
[0, 1, 1, 0],
[1, 0, 0, 1],
[1, 0, 0, 1],
[0, 1, 1, 0]
]
print("BFS:")
bfs_adj_matrix(matrix, 0) # Начинаем с вершины 0
def dfs_iterative_adj_matrix(matrix, start):
n = len(matrix)
visited = [False] * n
stack = [start]
while stack:
vertex = stack.pop()
if not visited[vertex]:
visited[vertex] = True
print(vertex, end=" ") # Обработка вершины
# Добавляем соседей в стек (в обратном порядке для правильного порядка обхода)
for neighbor in reversed(range(n)):
if matrix[vertex][neighbor] == 1 and not visited[neighbor]:
stack.append(neighbor)
# Пример использования
print("\nDFS Iterative:")
dfs_iterative_adj_matrix(matrix, 0)
#или
matrix= [
[1,0,1,0,0,1]
[1,0,1,0,0,1]
[0,0,1,0,0,1]
[1,0,1,0,0,1]
[0,0,1,0,0,1]
[0,0,1,0,0,1]
]
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.append(start)
print(start)
for next in graph[start] - visited:
dfs(graph, next, visited)
return visited
dfs(matrix,0)
from collections import deque
def shortest_path_length(adj_matrix, start_vertex, end_vertex):
if not adj_matrix or start_vertex < 0 or end_vertex < 0 or start_vertex >= len(adj_matrix) or end_vertex >= len(adj_matrix):
return -1
queue = deque()
queue.append(start_vertex)
distances = [-1] * len(adj_matrix)
distances[start_vertex] = 0 # Расстояние от начальной вершины до самой себя равно 0
# BFS
while queue:
current_vertex = queue.popleft()
if current_vertex == end_vertex:
return distances[current_vertex]
for neighbor in range(len(adj_matrix)):
if adj_matrix[current_vertex][neighbor] == 1 and distances[neighbor] == -1:
# Если сосед ещё не посещён, добавляем его в очередь и обновляем расстояние
distances[neighbor] = distances[current_vertex] + 1
queue.append(neighbor)
return -1
if __name__ == "__main__":
# Пример матрицы смежности
adj_matrix = [
[0, 1, 0, 0],
[1, 0, 1, 1],
[0, 1, 0, 1],
[0, 1, 1, 0]
]
result = shortest_path_length(adj_matrix, 0, 3)
print(f"Длина кратчайшего пути: {result}")
#перевод строки списка в число
i = ['1,0,0,1,0,']
int_list = [int(item) for item in i.split(',') if item]
print(int_list)
import sympy
sympy.isprime() #проверка на простоту
import os
os.listdir(folder)#получение других папок в папаке
import math
print(math.lcm(2 числа)) #НОК
print(math.gcd(2 числа)) #НОД
print(math.comb(количество объектов,по сколько штук))
import numpy as n
n.cbrt() #кубический корень
#конвертавция датафреймва в нампай данные а потом в список
data=data.values
data=data.tolist()
#сортировка словаря по значениям
sorted = dict(sorted(rooms.items(), key=lambda item: item[1]))