Python >

Разработка программных модулей

2024-2025 учебный год

Практические занятия

Практика 4
Оценка сложности эвристических алгоритмов 
1. Для двух заданных списков определить общие элементы, записать их в новый список. Каждый из трех списков вывести в строку, отделяя от других пустой строкой.
2. Из элементов заданного списка, больших заданного числа, образовать новый список.
3. В списке из 2n чисел найти сумму квадратов элементов с четными индексами и сумму кубов элементов с нечетными индексами.
4. Определить для заданного числа частоту (в долях от общего количества чисел), с которой оно встречается в списке.
5. Главная диагональ матрицы Вам дается целое число n. Выведите матрицу размера nxn, в которой все элементы 0, кроме главной диагонали, на которой стоят 1. (Главная диагональ квадратной матрицы состоит из элементов с индексами i и j, в которых i=j. То есть это элементы с индексами 00, 11, 22 и т.д.)
Входные данные: 5
Выходные данные:
[1, 0, 0, 0, 0]
[0, 1, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 1]

n = int(input())
matrix = []
#ваш код
for i in range(n):
  print(matrix[i])
6. Раскраска шахматной доски В этом задании вам предстоит раскрасить шахматную доску размера nхn в черный и белый цвета. Элемент с индексом [0][0] раскрасьте в белый цвет, а далее в шахматном порядке. Для обозначения черного цвета используйте символ "b", для обозначения белого цвета — символ "w".
Входные данные: 4
Выходные данные:
['w', 'b', 'w', 'b']
['b', 'w', 'b', 'w']
['w', 'b', 'w', 'b']
['b', 'w', 'b', 'w']
Код
matrix = []
n = int(input())
for i in range(n):
  matrix.append([])
  for j in range(n):
    matrix[i].append("")
# место для вашего кода
# Не удаляйте код ниже, он нужен для проверки
for i in range(n):
    print(matrix[i])
7. Обратная диагональ матрицы. Мы решали задание с заполнением главной диагонали, а теперь нам предстоит сделать аналогичную вещь для обратной (побочной) диагонали. Выведите матрицу размера nхn с такими элементами: все значения, стоящие на обратной (побочной) диагонали, равны 1, остальные - 0. (Побочная диагональ квадратной матрицы размера nхn состоит из элементов с индексами ij, в которых i+j=n-1. То есть в данном случае это элементы с индексами 04, 13, 22, 31, 40.)
Входные данные: 5
Выходные данные:
[0, 0, 0, 0, 1]
[0, 0, 0, 1, 0]
[0, 0, 1, 0, 0]
[0, 1, 0, 0, 0]
[1, 0, 0, 0, 0]

Код
matrix = []
n = int(input())
# Не удаляйте код ниже, он нужен для проверки
for i in range(n):
  print(matrix[i])
Домашнее задание
Классы задач P и NP. 
Основы теории графов. 
Представления графов: матрица смежности, весовая матрица.
Задача Прима — Краскала. 
Задача коммивояжёра. 
Метод грубой силы.
«Жадные» алгоритмы. 
Локальный поиск. 
Алгоритм Дейкстры. 
Метод ветвей и границ. 
Алгоритм Литтла. 
Метод случайных перестановок. 
Алгоритм Флойда — Уоршелла. 
Подготовка тестового набора данных. 
Запись алгоритмов псевдоалгоритмическом языке и на языке программирования. 
Количество элементарных операций в алгоритме. 
Временная и асимптотическая сложности алгоритмов. 
Сравнение алгоритмов по сложности.