0 / 0 / 0
Регистрация: 01.04.2019
Сообщений: 5

Алгоритм определения значения минимального элемента в матрице

19.12.2019, 19:36. Показов 1175. Ответов 9

Студворк — интернет-сервис помощи студентам
Написать программу, реализующую алгоритм определения значения минимального элемента в матрице с использованием list, замерить время выполнения и сравнить с готовой реализацией алгоритма из библиотеки NumPy.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2019, 19:36
Ответы с готовыми решениями:

Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML
Составить алгоритм определения суммы минимального элемента и первого элемента массива от 1 до 5 на HTML

Построить алгоритм определения минимального элемента и его индекса в одномерном массиве
Построить алгоритм определения минимального элемента и его индекса в одномерном массиве.

Построить и записать алгоритм определения минимального элемента и его индекса в столбцах матрицы
Всем добрый день! Я с просьбой! Задание: построить и записать алгоритм определения минимального элемента и его индекса в столбцах...

9
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 10:26
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from numpy import amin, random
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    print(f"{function.__name__}, result: {r}, time: {time:.10f} seconds")
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
run_time(amin, a)
run_time(bmin, a)
PS. Интересный результат...
amin, result: -1000, time: 0.0890608830 seconds
bmin, result: -1000, time: 0.0331347970 seconds
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:15
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import random
import numpy as np
 
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
import timeit
print(timeit.timeit('np.amin(a)', 
  setup='import numpy as np; from __main__ import a', number=10))
print(timeit.timeit('np.amin(a)', 
  setup='import numpy as np; from __main__ import a; a = np.array(a)', number=10))
print(timeit.timeit('bmin(a)', 
  setup='from __main__ import bmin, a', number=10))
 
#0.9073198139667511
#0.007684736978262663
#0.24830129405017942
np.array естественно выигрывает в скорости.

Добавлено через 22 минуты
Похожая тема: Почему стандартный list быстрее массива Numpy?
1
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 11:17
Рыжий Лис,
Спасибо. - Исправил, хотя условие об этом умалчивает...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from numpy import amin, array, random
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    print(f"{function.__name__}, result: {r}, time: {time:.10f} seconds")
 
def bmin(a):
    return min([min(row) for row in a])
 
 
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
 
run_time(amin, array(a))
run_time(bmin, a)
amin, result: -1000, time: 0.0014144650 seconds
bmin, result: -1000, time: 0.0215855130 seconds
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:24
Запускай хотя бы три раза каждую функцию, чтобы усреднить разброс замеров времени.
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 11:40
Рыжий Лис,
В данное случае, что запустить 10 раз, что добавить 0 к "n = 1000" - не вижу принципиальной разницы.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 11:48
Разница есть. Даже две:

1) размерность матрицы записана как https://www.cyberforum.ru/cgi-bin/latex.cgi?n^2. При увеличении n в десять раз, размер её увеличится в 100 раз!

2) время работы функции фактически случайное число. Повторное проведение измерений позволяет усреднить значение и статистически вычислить погрешность измерений.
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 12:00
Рыжий Лис,
1. Речь идет о принципиальной разнице, лишний 0 - всего лишь примера, как увеличить время выполнения.
2. "Время работы функции фактически случайное число" только потому, что ей мешают другие процессы. И, IMHO, что вы запускаете функцию N раз на малых наборах данных, что соответственно увеличиваете набор данных - погрешность измерений будет практически одинаковой.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2019, 12:21
2) одиночный замер - это всё равно случайное число. Хотя согласен, что увеличение входных данных - а следовательно и времени выполнения повышает воспроизводимость результатов (слева n=300, справа n=1000. 10 замеров для каждого):
0
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
20.12.2019, 13:58
Рыжий Лис,
Потестировал оба варианта...

На Win10 можно получить такой результат:
стандартное отклонение времени bmin на больших данных: [1000 * 1000]
0.0001106629
стандартное отклонение времени аmin на больших данных: [1000 * 1000]
0.0000187313
стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз
0.0006204650
стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз
0.0000317176

А можно и такой:
стандартное отклонение времени bmin на больших данных: [1000 * 1000]
0.0010734151
стандартное отклонение времени аmin на больших данных: [1000 * 1000]
0.0000847839
стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз
0.0004003994
стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз
0.0001038409

Т.о. для точных измерений либо должна быть "другая" ОС, либо измерения должны проводиться часами...
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from numpy import amin, array, mean, random
from statistics import stdev
from timeit import default_timer as timer
 
 
def run_time(function, a):
    t = timer()
    r = function(a)
    time = timer() - t
    return(time)
 
def bmin(a):
    return min([min(row) for row in a])
 
 
k = 100
 
# big data
x = [0] * k
y = [0] * k
n = 1000
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
m = array(a)
 
for z in range(k):
    x[z] = run_time(bmin, a)
    y[z] = run_time(amin, m)
    
print('стандартное отклонение времени bmin на больших данных: [1000 * 1000]')
print(f'{stdev(x):.10f}')
print('стандартное отклонение времени аmin на больших данных: [1000 * 1000]')
print(f'{stdev(y):.10f}')
 
# small data
x = [0] * k
y = [0] * k
n = 100
a = [[random.randint(-n, n) for _ in range(n)] for _ in range(n)]
m = array(a)
 
for z in range(k):
    i = j = 0
    for _ in range(99):
        i += run_time(bmin, a)
        j += run_time(amin, m)
    x[z] = i
    y[z] = j
    
print('стандартное отклонение времени bmin на малых данных: [100 * 100] * 100 раз')
print(f'{stdev(x):.10f}')
print('стандартное отклонение времени аmin на малых данных: [100 * 100] * 100 раз')
print(f'{stdev(y):.10f}')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2019, 13:58
Помогаю со студенческими работами здесь

Написать программу определения минимального значения элемента массива разного типа
2).Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа

Используя перегрузку функций, написать программу определения минимального значения элемента массива
Добрый день, подскажите, пожалуйста! ) Используя перегрузку функций, написать программу определения минимального значения элемента...

Составить алгоритм решения задачи для определения максимального и минимального значения из двух различных вещественных
8. Составить алгоритм решения задачи для определения максимального и минимального значения из двух различных вещественных чисел.

Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа
Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа

Массив: Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа
Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru