forked from UNN/2026-rff_mp
755 lines
298 KiB
Plaintext
755 lines
298 KiB
Plaintext
|
|
{
|
|||
|
|
"cells": [
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 14,
|
|||
|
|
"id": "e631810e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"import pandas as pd\n",
|
|||
|
|
"import matplotlib.pyplot as plt\n",
|
|||
|
|
"import numpy as np"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 15,
|
|||
|
|
"id": "12fa3ed1",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# CMU Serif\n",
|
|||
|
|
"plt.rcParams['font.family'] = 'CMU Serif'\n",
|
|||
|
|
"plt.rcParams['mathtext.fontset'] = 'cm'\n",
|
|||
|
|
"plt.rcParams['font.size'] = 14\n",
|
|||
|
|
"plt.rcParams['axes.titlesize'] = 16\n",
|
|||
|
|
"plt.rcParams['axes.labelsize'] = 15\n",
|
|||
|
|
"plt.rcParams['xtick.labelsize'] = 13\n",
|
|||
|
|
"plt.rcParams['ytick.labelsize'] = 13\n",
|
|||
|
|
"plt.rcParams['legend.fontsize'] = 12"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 16,
|
|||
|
|
"id": "c691c40e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>Structure</th>\n",
|
|||
|
|
" <th>Mode</th>\n",
|
|||
|
|
" <th>Operation</th>\n",
|
|||
|
|
" <th>Time</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>0</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Вставка</td>\n",
|
|||
|
|
" <td>0.199516</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>1</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.024629</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>2</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Удаление</td>\n",
|
|||
|
|
" <td>0.014065</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Вставка</td>\n",
|
|||
|
|
" <td>0.196946</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>4</th>\n",
|
|||
|
|
" <td>Связный список</td>\n",
|
|||
|
|
" <td>Случайный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.023807</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>...</th>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" <td>...</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>373</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Поиск</td>\n",
|
|||
|
|
" <td>0.062731</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>374</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Удаление</td>\n",
|
|||
|
|
" <td>0.062908</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>375</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Вставка (среднее)</td>\n",
|
|||
|
|
" <td>0.952690</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>376</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Поиск (среднее)</td>\n",
|
|||
|
|
" <td>0.060593</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>377</th>\n",
|
|||
|
|
" <td>Бинарное дерево поиска</td>\n",
|
|||
|
|
" <td>Отсортированный</td>\n",
|
|||
|
|
" <td>Удаление (среднее)</td>\n",
|
|||
|
|
" <td>0.064886</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"<p>378 rows × 4 columns</p>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" Structure Mode Operation Time\n",
|
|||
|
|
"0 Связный список Случайный Вставка 0.199516\n",
|
|||
|
|
"1 Связный список Случайный Поиск 0.024629\n",
|
|||
|
|
"2 Связный список Случайный Удаление 0.014065\n",
|
|||
|
|
"3 Связный список Случайный Вставка 0.196946\n",
|
|||
|
|
"4 Связный список Случайный Поиск 0.023807\n",
|
|||
|
|
".. ... ... ... ...\n",
|
|||
|
|
"373 Бинарное дерево поиска Отсортированный Поиск 0.062731\n",
|
|||
|
|
"374 Бинарное дерево поиска Отсортированный Удаление 0.062908\n",
|
|||
|
|
"375 Бинарное дерево поиска Отсортированный Вставка (среднее) 0.952690\n",
|
|||
|
|
"376 Бинарное дерево поиска Отсортированный Поиск (среднее) 0.060593\n",
|
|||
|
|
"377 Бинарное дерево поиска Отсортированный Удаление (среднее) 0.064886\n",
|
|||
|
|
"\n",
|
|||
|
|
"[378 rows x 4 columns]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 16,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"csv_path = \"../../source/results/benchmarks.csv\"\n",
|
|||
|
|
"\n",
|
|||
|
|
"data = pd.read_csv(csv_path)\n",
|
|||
|
|
"data"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 17,
|
|||
|
|
"id": "a3737f45",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.023733), np.float64(0.193345), np.float64(0.014249))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 17,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"# Получение данных для Связного списка\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_random_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_random_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_random_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_random_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_random_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_random_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"ll_random_search_average, ll_random_insert_average, ll_random_delete_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 18,
|
|||
|
|
"id": "5434d260",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.034479), np.float64(0.193979), np.float64(0.024509))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 18,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"# Получение данных для Связного списка\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_sorted_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_sorted_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_sorted_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_sorted_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_sorted_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ll_sorted_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Связный список') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"ll_sorted_search_average, ll_sorted_insert_average, ll_sorted_delete_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 19,
|
|||
|
|
"id": "3deed9a5",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.0), np.float64(0.003635), np.float64(5e-05))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 19,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"#Получение данных для хеш таблицы\n",
|
|||
|
|
"ht_random_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_random_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_random_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_random_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_random_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_random_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_random_delete_average, ht_random_insert_average, ht_random_search_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 20,
|
|||
|
|
"id": "490e5c46",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.000163), np.float64(0.003181), np.float64(0.000109))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 20,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"#Получение данных для хеш таблицы\n",
|
|||
|
|
"ht_sorted_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_sorted_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_sorted_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_sorted_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_sorted_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"ht_sorted_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Хеш таблица') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"ht_sorted_delete_average, ht_sorted_insert_average, ht_sorted_search_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 21,
|
|||
|
|
"id": "9d7274ab",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.000481), np.float64(0.006081), np.float64(0.000336))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 21,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"#Получение данных для дерева\n",
|
|||
|
|
"bst_random_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_random_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_random_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_random_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_random_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_random_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Случайный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_random_delete_average, bst_random_insert_average, bst_random_search_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 22,
|
|||
|
|
"id": "92a545c9",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/plain": [
|
|||
|
|
"(np.float64(0.064886), np.float64(0.95269), np.float64(0.060593))"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 22,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"#Получение данных для дерева\n",
|
|||
|
|
"bst_sorted_insert = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_sorted_insert_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Вставка (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_sorted_search = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_sorted_search_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Поиск (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_sorted_delete = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].tolist()\n",
|
|||
|
|
"bst_sorted_delete_average = data.loc[\n",
|
|||
|
|
" (data['Structure'] == 'Бинарное дерево поиска') & (data['Mode'] == 'Отсортированный') & (data['Operation'] == 'Удаление (среднее)'),\n",
|
|||
|
|
" 'Time'\n",
|
|||
|
|
" ].iloc[0]\n",
|
|||
|
|
"\n",
|
|||
|
|
"bst_sorted_delete_average, bst_sorted_insert_average, bst_sorted_search_average"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 23,
|
|||
|
|
"id": "b2e93d6e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# countUsers = 10_000\n",
|
|||
|
|
"# countRepeat = 10\n",
|
|||
|
|
"# countRandomSearch = 200\n",
|
|||
|
|
"# countNotExitstSearch = 100\n",
|
|||
|
|
"# countDeletes = 500\n",
|
|||
|
|
"\n",
|
|||
|
|
"countUsers = 20_000\n",
|
|||
|
|
"countRepeat = 20\n",
|
|||
|
|
"countRandomSearch = 1000\n",
|
|||
|
|
"countNotExitstSearch = 500\n",
|
|||
|
|
"countDeletes = 1000\n",
|
|||
|
|
"\n",
|
|||
|
|
"ll_col = 'blue'\n",
|
|||
|
|
"ht_col = 'orange'\n",
|
|||
|
|
"bst_col = 'green'\n",
|
|||
|
|
"\n",
|
|||
|
|
"iterations = range(countRepeat)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 24,
|
|||
|
|
"id": "208784a5",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWIAAAJKCAYAAACmkjw+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYFEX6x/GXIDmICEoWJIkBcwYEc0QROSOgnhEVDKgYQP+KnGcATIiIWTEgeoenGDCA4pkzOYgkSZIlM//nV3s19szO7s4uk3bm++GZZ5menqnu6p6e6rffrioTCoVCBgAAAAAAAABImrLJ+2gAAAAAAAAAgBCIBQAAAAAAAIAkIxALAAAAAAAAAElGIBYAAAAAAAAAkoxALAAAAAAAAAAkGYFYAAAAAAAAAEgyArEAAAAAAAAAkGQEYgEAAAAAAAAgyQjEAgAAAAAAAECSEYgFAAAAAJTY3Llz7a677kr3YuSkTz/91J5//vl0LwYAIE5lQqFQKN6ZAQDpsXz5chs8eLBNmjTJdtllF6tWrZpVqFDBevbsaQcddJCdc845NmrUqHQvJgAAyDFr1qyxc88911588UWrUaOGffzxx/bkk0/azz//bD/88IN1797dnn322Yj3PProo26e77//3ho1amQnnXSSPf7442lZ/m3bttmgQYNs1qxZtnr1avvtt9/s6quvtgsuuCBivi1bttj//d//2ebNm22nnXZy63fddddZ27ZtI+b7/fff7c4773TrtXXrVluwYIHdfffdtvPOO0fM9+WXX9rw4cNtjz32sMWLF1v16tXt1ltvtXLlykXM98ILL9jnn39uzZo1s+nTp9vRRx9t3bp1i5inf//+dsQRR9jxxx+f8PoBACQWgVgAyHDvvfeenXfeedanTx+7/vrrrVKlSm66TgTUsF+0aJGNGDHCOJwDAIBUUzCya9eudvjhh0dMf+aZZ1ym5ocffmhvvfWWnXzyyfnee9xxx9no0aNdADdd+vXrZx07dnTLIp999pl16NDBBV1vueWW8HyXXHKJtWzZ0vr27eueL1261Nq1a2djx461Fi1auGmbNm2yAw44wEaOHGkHH3ywmzZhwgTr3bu3C7zusMMObtq0adPstNNOc9Nq1qzppqk8BWQVpPYU3H755ZddGT5ofMIJJ9jf//73iGCsAr5nnHGGvfTSS+5iPQAgc9E1AQBkMGWVnHLKKa5xriwJH4QVNeaVcbFs2bK0LiMAAMhNkydPth9//DFfENZ74IEHrF69enbFFVe4zNloel86g7Dz5s1zy+WDsKLMUgU11cZSYFSU/aqs3ssvvzw8X506dezEE0+0AQMGhKcpy7dKlSrhIKy0b9/e/X366afD026//XY7/fTTw0FY6dWrlz3xxBMuSOszcBX0vfLKK8PzlC1b1s2nC/MKynrKoj377LPtjjvuSGj9AAASj0AsAGSoP//8093q17p1a3cCU5ChQ4damTJlUrpsAAAA9913X0RwMtqOO+5ojzzyiAt43nTTTZZpdMu/ugeI7hbh0EMPddmtel1ee+01a9Kkies+IEjdErz55pvuLiV55ZVXbJ999slXjubTZ8iGDRvs3//+d775ateubQ0aNHAZwjJx4kR311P0fPqs+fPnh5fNO+uss+yNN96IGfAGAGQOArEAkKGUOaEGuLolKIz6IIvV6AcAoCSCmXa5VDbyqKujeLaDApWvv/6667O0MF26dLEzzzzTBTsVXMwku+22m1vX6OCl+uEP+vbbb61WrVr53q/g6fr16+2XX34pcr6vvvrK/V/zbty4scj59FkSPZ/mET9f8E6p/fbbz/71r3/FufYAgHQgEAsAGertt98OZ2UU5Z///Kf7O378eHc7nBrpmjZw4EDXrcE111zjujj47rvvIt6nPsV0YvTggw+6/mY7d+4cLtcbNmyYGxBMWbfKZtFthvqrvt50q57oBEblKZNDt+SpTAWRdYJ27LHHuvdq0It33303/LnvvPOOXXjhhfaPf/zD3Uqnz1SWiCgbRJ+v96kPtA8++MDdqnfzzTe72/LatGnjllkni/qr5+XLl3eDVUyZMsV16dCjRw/3fn2Oz0KRL774wg1yprq555573C1+K1euLLR+NXiH1mnXXXd1g23ce++9dv/997uHbl/0y6k+8Iq7DUTLp1sPNb/WQf3VrV27Nvz6U0895W7fVDnqZ07roBO0a6+91k3Ta7odUoO66RZI1edjjz3mtpX6tNNgbspG8n3fXXbZZe59nTp1cuugetCy6ZbIaPoc9U+srCf1laf10e2SQao/3cKp7a911WeqXJWh2z3Vx50GK1E5yiZq2LChW1ftN+o/8Mgjj3Tzqo7++9//un4FlXmkWzdVngZF0cmy9hX1Raj+73799ddwIEB1prrQ+qrfPG2HoKlTp9oNN9zgBjpRuVo+BQaC203zqDzd3qm+/rS++n5Ee//9992+rPdq39Y+rn1d6619X3WgMlatWuXmV5aU1kH7tz5Ty6E6jbZixQq3D2i/VV1qXdSvosRbH8HvjQbH0bLOmDHD7Q9ar+D3piDF3T90wUjHDX03tTyax2eGqcxLL73UfV/U/6I+U+uvkdWV0RW8hVZZXEOGDHHzan/V+geXU8clbSt9hvqi1HLpc9RXot4b67uiwXb0XQneOaBjmbaZFPfYEYv6Y9Q+rvm1z2u5dZuyBsxRv5Dx0kCMuk1Z3zUdi7W8GvBHjjrqKHf7swYTuvjii11ZOu6ovk899VT3um6fVjBMxyhlxaketBw6lmj5guuh75jqWJ9z2GGHuRHXRcccbaeKFSu6/Ur7v68jbUvtf6oj8ceeY445JryfxrO9i1O21lnfp0MOOcRlHKp8PTQ92Idm8NiiwSxVT9HHdG2L888/35WrQaFeffXVuLaLMjkPPPBAu+iii9w+p22jYJf6CVWZfh/V90z7r+pLdaNjxMKFCwtdxnXr1rntpM8PHv+0z+r/mqbXNI/m1fbWe/UZOg4oIzL6t1K/q0E6Pup4VL9+fXec0PLrfToG+XLVx6nmU53rlnx9H7S+0UG+WLSsuhgcK6AYqy6VHatjtP+tzwT6vf7jjz/C/b56+q1W/SiwKfoNDXYP5VWuXDn8uvY77csFzaffBf3u+d/jgubzrxc0X7DMaPpeqR0CAMhgGqwLAJB52rRpozO80JQpU4r1vk2bNoV23HHH0L777hv6/fffw9PffPPNUJUqVUJffPFFeNoDDzwQOuKII0Jbtmxxz3/77bdQ1apVQxMnToz4zJEjR7pl2bZtW3janXfeGapXr15o7dq14WkXXHCB+7yg999/37131qxZ4WmvvvpqqF27dm5Zvd69e4cuuuii8PPx48e7982YMSPi8xo0aBC6/fbbI6bpeePGjSOmvfPOO+79+hzv008/De25556h1atXh6cNHjw4dPTRR4fiofXr0KFDxLQPP/ww3/oVZxvcf//9oS5duoS2bt0anvbGG2+EDj744ND69esL3QbaNzRNr4nK2m+//SLqVc477zy33p7K0vueeuqp8LTZs2eHypYtGxozZkx42lVXXRXq06dPxGepvk4//fSI5fBuvvnmiM+Lrn/Rdu/evXvEtJtuusnN6+vg6aefDn300Ufh11XnqnvvjjvuCM2ZM8ctw6mnnhp69NFHw6+tW7fO7SOffPJJvuW77bbb8u1fwe0mjRo1Ct16662hwug9eq/27SDt+8Hl1PKddtppoSFDhkTMp339mmuuCT/X/rjXXnuFBg4cGJ722muvuX1l7ty5cddHcL1U/96SJUtC1apVy/e9KUi8+0f//v1DBx54YGjlypXu+Zo1a9z30K9Hjx49wvNqHYLbWMur5Zavv/461KRJk9C0adPc882bN7vvTrA+gvWu75yn7VyuXLnQl19+me+74svSdrj00ktDDz30UL79Nt5jR2Fi1fmzzz7r6lzbryjjxo0L1alTJ/TLL7+Ep+mYcOyxx7r/X3jhhRH1Flw2rY9e90466aRQ7dq1Q5MmTQpP+/XXX93x6OGHHw5P0zF/t912C1177bURy6K6HTRoUL460vf
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"# Создание двух графиков рядом\n",
|
|||
|
|
"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Левый график: случайные данные =============\n",
|
|||
|
|
"ax1.set_title(\"Вставка случайных данных\")\n",
|
|||
|
|
"ax1.set_ylabel('Время, с')\n",
|
|||
|
|
"ax1.set_xlabel('Повторения')\n",
|
|||
|
|
"ax1.set_xticks(iterations)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Связный список\n",
|
|||
|
|
"ax1.scatter(iterations, ll_random_insert, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax1.axhline(y=ll_random_insert_average, color=ll_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Хеш таблица\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, ht_random_insert, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax1.axhline(y=ht_random_insert_average, color=ht_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Дерево\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, bst_random_insert, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax1.axhline(y=bst_random_insert_average, color=bst_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.legend(loc='best')\n",
|
|||
|
|
"ax1.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Правый график: отсортированные данные =============\n",
|
|||
|
|
"ax2.set_title(\"Вставка отсортированных данных\")\n",
|
|||
|
|
"ax2.set_ylabel('Время, с')\n",
|
|||
|
|
"ax2.set_xlabel('Повторения')\n",
|
|||
|
|
"ax2.set_xticks(iterations)\n",
|
|||
|
|
"# ax2.set_xticklabels(range(1, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Связный список\n",
|
|||
|
|
"ax2.scatter(iterations, ll_sorted_insert, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax2.axhline(y=ll_sorted_insert_average, color=ll_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.5)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Хеш таблица\n",
|
|||
|
|
"ax2.scatter(iterations, ht_sorted_insert, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax2.axhline(y=ht_sorted_insert_average, color=ht_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.5)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Дерево\n",
|
|||
|
|
"ax2.scatter(iterations, bst_sorted_insert, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax2.axhline(y=bst_sorted_insert_average, color=bst_col, linewidth=1, \n",
|
|||
|
|
" linestyle='--', alpha=0.5)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.legend(loc='best')\n",
|
|||
|
|
"ax2.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Общая настройка\n",
|
|||
|
|
"plt.suptitle(f'Сравнение производительности вставки в структуры данных (N = {countUsers})', \n",
|
|||
|
|
" fontsize=14)\n",
|
|||
|
|
"plt.tight_layout()\n",
|
|||
|
|
"plt.savefig('../img/insert.pdf',\n",
|
|||
|
|
" format='pdf',\n",
|
|||
|
|
" dpi=300,\n",
|
|||
|
|
" bbox_inches='tight', \n",
|
|||
|
|
" pad_inches=0.1)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 25,
|
|||
|
|
"id": "7de42c9d",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "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V0/9aDllbWm63v/qq68iy+jzUtab5tFnOnz4cDcgjUf7SFlP2q6BAwe6/aCL9SuuuMJN03uPPvpoZH59PlqfjolRo0a5OnuD+2hZfT5a7phjjrHHHnvMTdfxq2NZn6WCPuqTOdHvTCL74rDDDnP7QftS3YtoXYl2L1JYfSZMmOD6WtRnqONPx6seD1Y5gwcPdgP9KVtM3yV93nqtY+uaa65xWWvqZ1L7cdOmTZHvtgbOUXabfjTQjv/41PdR33ENouQ/XvS98x4N1iPEmqabRtom0TGpz0n11v7V+wqeKOtR69h3332LVbbeO+igg9xxqWxCHfuqjx6t1nd01apVUftQx7GW0WBI2heqt84xHu0jrUPr07Y98MADbroeFa9SpYrL7tM+1pMLRZkxY4ZdcMEF7njXeUOfuz7/2GM/kWPLf+z//e9/t48++sgFoi666KKoY7845+TYc4K2MTaAqn168sknu+V0c1DL6bhRvTRNQUNlaorqoGn62/XQQw8ldEzr3Onv97QgOg9pECh9T71jPpNo4C3x+nr303nee1+/C5rHv55E50sHnc90LOp40t9a/S33n+eLsy8Smc9P53IdUwAAFEh9xAIA4HfggQcqKhP69ttvi7Xctm3bQnvuuWfo0EMPDf3yyy+R6S+//HKocuXKoQ8//DAy7a677gq1bds2tGPHDvd66dKloSpVqoRmzJgRtc7HHnvMbUteXl5k2qhRo0L16tULbdy4MTLt3HPPdevze+utt9yyCxcujEx7/vnnQ+3bt3fb6hk4cGDovPPOi7yeNm2aW+7777+PWl+DBg1C119/fdQ0vW7cuHHUtNdff90tr/V4Pvjgg9BBBx0UWr9+fWTaPffcEzruuONCiVD9OnToEDWtS5cuof/7v/8r0f6/7LLLQkOGDIm83rlzZ+jwww8PTZw4MTLt0UcfDZ1++umh3r1759ueJ554ItSkSRP3+XhWrVoVatasWeiLL76ITPv8889DderUCa1evToyrVGjRqFrr702an16rel++ty0H995553ItM2bN7tytT8SpfWOHDkyatqIESPylXfnnXeGzjzzTLcvPC+99FLoyCOPdOUWdkzqu6Jp/v2hz/rggw8O3XLLLZFpL7zwgvsslixZ4l6rrNjlVN/TTjsttHLlyqjtS/Q7U9S+UN09a9eudcfM3XffXeSyRdVn/PjxoXfffTfyXseOHaM+pxtuuCG0ePHiyPdQ9b7mmmsi72t/av8fe+yxoa1bt0amX3fdde4Y2r59e9T2nHzyyVHTvOPF/72bMGGC+25v2LAhMu3SSy+Neh27//v161fssj/66CO3nj59+kRNHzRokPtO/Pbbb5Fp3bt3Dw0dOjTyevLkyaG6detGzSOvvvqqW6f3vdV6O3XqFFqxYkWoOHRe8J+34h37xT0f++uof8fuw+Kckws6J/gVdE6+6qqrQnvttVfkvDp37txQjx49IvUoipbTev1/S2L5zx36TtaqVSu0//77h37//Xc3Tce8/7gvzJw5c9x5P9GfsWPHus+iOPS900+sm266ydXV+w766W/YCSec4P6tv0k6x8ZatGiRW977/pcrVy7Ut2/ffPM9/vjjbr6ZM2eGSkLbp3PJrtB3Xtvree+990I1a9aMnHd1XGsb45Wj7/Buu+1WrH3m980
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"# Создание двух графиков рядом\n",
|
|||
|
|
"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Левый график: случайные данные =============\n",
|
|||
|
|
"ax1.set_title(\"Поиск в случайных данных\")\n",
|
|||
|
|
"ax1.set_ylabel('Время, с')\n",
|
|||
|
|
"ax1.set_xlabel('Повторения')\n",
|
|||
|
|
"ax1.set_xticks(iterations)\n",
|
|||
|
|
"# ax1.set_xticklabels(range(1, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, ll_random_search, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax1.axhline(y=ll_random_search_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, ht_random_search, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax1.axhline(y=ht_random_search_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, bst_random_search, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax1.axhline(y=bst_random_search_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.legend()\n",
|
|||
|
|
"ax1.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Правый график: отсортированные данные =============\n",
|
|||
|
|
"ax2.set_title(\"Поиск в отсортированных данных\")\n",
|
|||
|
|
"ax2.set_ylabel('Время, с')\n",
|
|||
|
|
"ax2.set_xlabel('Повторения')\n",
|
|||
|
|
"ax2.set_xticks(iterations)\n",
|
|||
|
|
"# ax2.set_xticklabels(range(1, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, ll_sorted_search, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax2.axhline(y=ll_sorted_search_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, ht_sorted_search, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax2.axhline(y=ht_sorted_search_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, bst_sorted_search, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax2.axhline(y=bst_sorted_search_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.legend()\n",
|
|||
|
|
"ax2.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Общий заголовок\n",
|
|||
|
|
"plt.suptitle(f'Сравнение времени поиска в структурах данных (N = {countRandomSearch} + {countNotExitstSearch})', fontsize=14)\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.tight_layout()\n",
|
|||
|
|
"plt.savefig('../img/search.pdf', \n",
|
|||
|
|
" format='pdf',\n",
|
|||
|
|
" dpi=300,\n",
|
|||
|
|
" bbox_inches='tight', # обрезает лишние поля\n",
|
|||
|
|
" pad_inches=0.1)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 26,
|
|||
|
|
"id": "0fd42f30",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWIAAAJKCAYAAACmkjw+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeUFFXaxvGXIDlIVDIoyYComBERVMS0uIiIrIJhXXUNYCAZQBcFUVfBnNOqGBDdDwMGDKCYA+qiZBEEBVGi5OnvPLetprqnJ3d1/P84c4aurqpbt9LceuuGcqFQKGQAAAAAAAAAgMCUD27VAAAAAAAAAAAhEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAAAAAAEjEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAAAAAAEjEAsAAAAAAAAAASMQCwAAAAAAAAABIxALAAAAAGls8+bNdsUVV7jfSJzhw4fb77//nurNAADkkHKhUCiU6o0AAGS/VatW2e23324zZ860XXbZxWrUqGGVKlWys846yw488EA7/fTTbeLEianeTAAA0s65555rF110ke2///72yy+/uKDsypUr7Y033rD27dvbF198YVWrVo3M/84779gNN9xg7733nlWrVs2OPPJIe/DBB93f31T6+OOP7YknnrC777477vdPPvmkffjhh7bbbrvZ3Llz7aijjrK+fftGzbNt2zb717/+ZVu3brW6devat99+a5dffrl17Ngxar6ff/7Zrr/+emvWrJlt377dfvrpJ7dP6tevH5lH0wYPHmzPPPOMVahQIaBcAwCwA4FYAEDg9KD4t7/9zT3s6OGxSpUqbroeovRQtHz5cveAyJ8kAACi/fe//7X//e9/dtVVV0VN/+GHH1yA9u2337Yrr7zSbrnllnzLapmjjz7aunfvbqmUl5fn8vH3v//dTjrpJHvsscfyzfPUU0+5gOiUKVMiy/Ts2dMt4w/Gnnfeeda2bVsbMmSI+6yAdJcuXdxybdq0cdO2bNlinTp1socfftgOOuggN2369Ok2aNAg++STT2ynnXaKrG/y5Mn2448/ujIKAABBo2sCAECg3n33XTvxxBNd7ZWrr746EoQVPQiptsqvv/6a0m0EACAdbdq0yUaNGuVqw8Zz5plnumClWpx89tln+b5XwFK1S1Pprbfesv79+9usWbOsYsWKcedRLVcFVv/5z39GppUvX97lWy9wFZQV1X59/PHH7YILLojM16BBAzvuuOPcfvI89NBDriawF4SVI444wv1+9NFHo9L+61//6oLAeikMAEDQCMQCAALzxx9/uIcvNZu88MILC5xvwoQJVq5cuaRuGwAA6e7ZZ5+1ww8/3GrXrl3gPPfff7/rlkC1Y9XSJN2oRq5qul533XVR3Sf4zZgxwwVC99lnn6jp6m5g6dKlrrsCef75561FixZWs2bNfPO99NJLkfxrv8Wuy5tP6/BT+UMB7XvvvbfMeQUAoCgEYgEAgVGtEz1YqVuCwqj/tngPTECm8GprAX7qbiVVXa6kMm31x4nE7CPV1FQgszDNmze3sWPH2tdff23jxo2zTKQ+bqVOnTpR0+vVq+d+f/rpp5H5Yufx5tu4caPrwqGo+bx1+anrhqeffjpBuQEAoGAEYgEAgXn11Vfd70MOOaTIeW+++Wb3e9q0aa4poR6WNO3GG2903RpceumlrouDL7/8Mt/D7H333We33Xab62+2V69ekXQ9quWiAcFU62XYsGH273//2/0+4YQTXDNHWbdunUuvSZMmrjmj0lQQ+YUXXrBjjjkmUmPm9ddfj6z3tddes7PPPttuuukmV9NH61QzUpk0aZJbv5ZT33Zqmjlnzhw3QrOaW+65555umxUo0W99VpPNkSNH2nfffee6dBg4cKBbXuvx1+DRYCca5Ez7ZsyYMa7p5urVqwvdv2vXrnV52nXXXd3gJtpm9SeovvfOOeecyKjRJd3/3vZffPHFduutt7rfjzzySOT7u+66y/XTp1pQ77//fr7tUl5U00vHxz94y7Jly1wt6muuucYdL+VX+0W+//57u/baa93AKuoPUN+LtkOfNV3fz549295880133LQftf06LhroRvmvVauWO97K55o1awrcdx999JEbTE7rOPTQQyP5WL9+vXXr1s0qV67sBorxAis6FupyQ+vWvtN+UZ+GWr5Hjx4usOLR/laNcB0L5XHEiBGub8NYzz33nDsPe/fu7danbW7ZsqUb9E55Xbx4sZtPy+ocuuyyy9x+0fF9+eWXS3yO+/fxXnvt5fatdzx1rvr3sdesWOkNGDDApaH5hw4d6tapY3vPPfcUen5+8MEHdv7557v5FRBRHnVu65g98MADVlyqOac8/OMf/7DRo0dHNdfWNbr33nu7Y6MfDRa47777usCVzjWvybSOg/Zto0aNXC09damifap7i/aZ8uoN8qPjpeUaN25s//nPfyLboSbWysupp57qjo3/fnDGGWe481LUZ6amqdWAl08NqqRm1gqsqYajvlfTaZ2z6ltT35ckbd1zdF3oXNG5qz5D1YRb3+s82bBhQ9Q+nDdvno0fP94dQ32v/anr0aNgn8537T91L/N///d/kfuh7m06X7TtxaFzs0+fPi5POua6Dlq1auW2Vftc/XaKtvGOO+5w26TpJ598srsu/bz7qLZBedb9Vvdd3X/991HtO51bqlGpgau0rVq/7lsHHHCAm1f3O61f9yf9X9P0nf7WxNL1rPuC5tH9TzU3X3nlFZcvTVOQVNsi2i7vPqBruii6nnXMDjvssCLnVZN+zae/g7p+M82SJUvcb3/3ReLVoPW+1+/YeWLn0z1Y9+eC5tP9XvdDP5076mvWu5cCABAYDdYFAEAQ9txzT1XHCn333XclWm7Lli2hnXfeObTvvvuGfv7558j0l156KVStWrXQxx9/HJn273//O9S5c+fQtm3b3Ocff/wxVL169dCMGTOi1vnwww+7bcnLy4tMu/7660ONGjUKrV+/PjLtzDPPdOvze/PNN92yCxYsiEx77rnnQl26dHHb6hk0aFDonHPOiXyeNm2aW27evHlR62vSpEno2muvjZqmz82bN4+a9tprr7nltR7P+++/H9prr71Ca9eujUy7/fbbQ0cddVSoOJS/I444Impa9+7dQ3/5y19Ktf8vvvji0JAhQyKft2/fHtp///1DTzzxRGTaQw89FDr55JND/fv3z7c9jz/+eKhFixbu+HhWrlwZatOmTeirr76KTPvyyy9DDRo0CK1atSoyrVmzZqGrr746an36rOl+Om7aj2+//XZk2saNG1262h/FofOrZcuWocsuuyxqutY5duzYuMsMHz488v+FCxfmO5bLly9354L/XD3xxBND5513Xtz1aVl/HrTtOgc9OrdPOumk0N133x2ZtmHDBpfGe++9V+JzXLQvR44cGTXttNNOy7ePlddKlSqFfvvtt6jt0Tr9x7YwOnc0/yOPPBK138qXLx+aPHlykcsvXbo01Lhx49BTTz0VdW3oXNbx1vWu9Xl0/P3X4VlnnRX5/8033xyqWLFi1L7cvHlz6OCDDw716dMnKt0zzjgjtN9++0VN0zV0/PHHR03z7gf+fXzdddeFrrrqqqj7yNlnn+32hSxatCjqvNE+1fclTVv3K61HaXm0rt69e4cOO+wwlzdPp06dQhMmTIh8vvXWW9293L+Nctddd4UqV67s7rmyevXq0JFHHunOuZKYO3du1DkyYMCAqPNaLrnkklC/fv0inz/99NNQ1apVQ/Pnz4+aT8dT57uf7r+x154ojb/97W9R0x588EE3r7f//eelviuI9/dl69atUdNPPfXU0D777BOZ/uqrr7q/E8X19ddfh+rXr1/g9zo/Hn300chn/a3VMdH17f2t0/earzh0L9I1U9yfO+64I+qaLw5ddwMHDsw3/dxzz3X7MJZ3H/Hui7vvvnuoa9eu+ebTvVHz6fpfsmSJ+/+oUaPyzaf7mb776aef8n134IEHhqZMmVKi/AAAUFLUiAUApB3VslItyb/85S+uxpJHNdI6dOjgarv5qda
|
|||
|
|
"text/plain": [
|
|||
|
|
"<Figure size 1400x600 with 2 Axes>"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"# Создание двух графиков рядом\n",
|
|||
|
|
"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Левый график: случайные данные =============\n",
|
|||
|
|
"ax1.set_title(\"Удаление в случайных данных\")\n",
|
|||
|
|
"ax1.set_ylabel('Время, с')\n",
|
|||
|
|
"ax1.set_xlabel('Повторения')\n",
|
|||
|
|
"ax1.set_xticks(iterations)\n",
|
|||
|
|
"# ax1.set_xticklabels(range(1, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, ll_random_delete, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax1.axhline(y=ll_random_delete_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, ht_random_delete, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax1.axhline(y=ht_random_delete_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.scatter(iterations, bst_random_delete, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax1.axhline(y=bst_random_delete_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax1.legend()\n",
|
|||
|
|
"ax1.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# ============= Правый график: отсортированные данные =============\n",
|
|||
|
|
"ax2.set_title(\"Удаление в отсортированных данных\")\n",
|
|||
|
|
"ax2.set_ylabel('Время, с')\n",
|
|||
|
|
"ax2.set_xlabel('Повторения')\n",
|
|||
|
|
"ax2.set_xticks(iterations)\n",
|
|||
|
|
"# ax2.set_xticklabels(range(1, 6))\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, ll_sorted_delete, label='связный список', color=ll_col)\n",
|
|||
|
|
"ax2.axhline(y=ll_sorted_delete_average, color=ll_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, ht_sorted_delete, label='хеш таблица', color=ht_col)\n",
|
|||
|
|
"ax2.axhline(y=ht_sorted_delete_average, color=ht_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.scatter(iterations, bst_sorted_delete, label='дерево', color=bst_col)\n",
|
|||
|
|
"ax2.axhline(y=bst_sorted_delete_average, color=bst_col, linewidth=1, linestyle='--', alpha=0.7)\n",
|
|||
|
|
"\n",
|
|||
|
|
"ax2.legend()\n",
|
|||
|
|
"ax2.grid(True, alpha=0.3)\n",
|
|||
|
|
"\n",
|
|||
|
|
"# Общий заголовок\n",
|
|||
|
|
"plt.suptitle(f'Сравнение времени удаления в структурах данных (N = {countDeletes})', fontsize=14)\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.tight_layout()\n",
|
|||
|
|
"plt.savefig('../img/delete.pdf', \n",
|
|||
|
|
" format='pdf',\n",
|
|||
|
|
" dpi=300,\n",
|
|||
|
|
" bbox_inches='tight', \n",
|
|||
|
|
" pad_inches=0.1)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": null,
|
|||
|
|
"id": "9eca6493",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"metadata": {
|
|||
|
|
"kernelspec": {
|
|||
|
|
"display_name": "Python 3",
|
|||
|
|
"language": "python",
|
|||
|
|
"name": "python3"
|
|||
|
|
},
|
|||
|
|
"language_info": {
|
|||
|
|
"codemirror_mode": {
|
|||
|
|
"name": "ipython",
|
|||
|
|
"version": 3
|
|||
|
|
},
|
|||
|
|
"file_extension": ".py",
|
|||
|
|
"mimetype": "text/x-python",
|
|||
|
|
"name": "python",
|
|||
|
|
"nbconvert_exporter": "python",
|
|||
|
|
"pygments_lexer": "ipython3",
|
|||
|
|
"version": "3.13.7"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"nbformat": 4,
|
|||
|
|
"nbformat_minor": 5
|
|||
|
|
}
|