From 702c52cdfae73cb6aa78c107cf3277659776d887 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 28 Sep 2025 21:02:33 +0300 Subject: [PATCH 01/19] Initial commit --- labs/lab_01/Untitled Folder/lab_01.md | 212 +++++++++++++++++++++++++ labs/lab_01/lab_01/lab_01.1.3.png | Bin 0 -> 76858 bytes labs/lab_01/lab_01/lab_01.md | 220 ++++++++++++++++++++++++++ labs/lab_01/lab_01/lab_01_1.1.png | Bin 0 -> 68961 bytes labs/lab_01/lab_01/lab_01_1.4.png | Bin 0 -> 90892 bytes labs/lab_01/lab_01/lab_01_1.7.png | Bin 0 -> 85277 bytes labs/lab_01/lab_01/lab_01_2.png | Bin 0 -> 54592 bytes labs/lab_01/lab_01/usage_time.py | 121 ++++++++++++++ 8 files changed, 553 insertions(+) create mode 100644 labs/lab_01/Untitled Folder/lab_01.md create mode 100644 labs/lab_01/lab_01/lab_01.1.3.png create mode 100644 labs/lab_01/lab_01/lab_01.md create mode 100644 labs/lab_01/lab_01/lab_01_1.1.png create mode 100644 labs/lab_01/lab_01/lab_01_1.4.png create mode 100644 labs/lab_01/lab_01/lab_01_1.7.png create mode 100644 labs/lab_01/lab_01/lab_01_2.png create mode 100644 labs/lab_01/lab_01/usage_time.py diff --git a/labs/lab_01/Untitled Folder/lab_01.md b/labs/lab_01/Untitled Folder/lab_01.md new file mode 100644 index 0000000..792ed6a --- /dev/null +++ b/labs/lab_01/Untitled Folder/lab_01.md @@ -0,0 +1,212 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +```python +"""Эмпирический анализ временной сложности алгоритмов""" +``` + +```python +"""Асонов С.В ИУ10-36""" +``` + +```python +"""Задания""" +``` + +```python +"""Задание 1.1""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def get_by_index(v: list): + return v[random.randint(0, len(v)) - 1] + +items = range(1, 10**5 * (20 - 2), 50000) +func = usage_time.get_usage_time()(get_by_index) +times = [ + func([ + random.randint(1, 3) + for _ in range(n) + ]) + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def multiplication_nums(v: list): + multi = 1 + for num in v: + multi *= num + return multi + + +items = range(1, 10**4 * (20 - 2), 10000) +func = usage_time.get_usage_time()(multiplication_nums) +times = [ + func([ + random.randint(1, 3) + for _ in range(n) + ]) + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 1.4""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def horner_method(v, x): + result = v[0] + for i in range(1, len(v)): + result = result * x + v[i] + return result + +items = range(1, 10**4 * (20 - 2), 10000) +x_val = 1.5 + +func = usage_time.get_usage_time()(horner_method) +times = [ + sum([ + func([ + random.randint(1, 10) + for _ in range(n) + ], x_val) + for _ in range(20) + ]) / 20 + for n in items +] + + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 1.7""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def mean(v): + total = 0.0 + for element in v: + total += element + return total / len(v) + + +items = range(1, 10**4 * (20 - 2), 10000) +func = usage_time.get_usage_time()(mean) +times = [ + sum([ + func([ + random.randint(1, 10) + for _ in range(n) + ]) + for _ in range(20) + ]) / 20 + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 2""" +``` + +```python +import numpy as np +import time +import matplotlib.pyplot as plt +from statistics import mean + + +N = 18 +max_n = 10**2 * N +step = 100 +num_runs = 5 + + +n_values = [] +times = [] + + +for n in range(1, max_n + 1, step): + + + A = np.random.rand(n, n) + B = np.random.rand(n, n) + print(f"Обрабатывается размер матрицы = {n}x{n}") + run_times = [] + + + for run in range(num_runs): + start_time = time.time() + + C = np.dot(A, B) + + end_time = time.time() + run_times.append(end_time - start_time) + + n_values.append(n) + times.append(mean(run_times)) + + +plt.figure(figsize=(12, 6)) +plt.plot(n_values, times, 'ro-', linewidth=2, markersize=6) +plt.title('Время выполненения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +plt.grid(True, alpha=0.3) +plt.show() +``` diff --git a/labs/lab_01/lab_01/lab_01.1.3.png b/labs/lab_01/lab_01/lab_01.1.3.png new file mode 100644 index 0000000000000000000000000000000000000000..d381cd1b512ed5548efb8f167bce6ed3a80fad3f GIT binary patch literal 76858 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 literal 0 HcmV?d00001 diff --git a/labs/lab_01/lab_01/lab_01.md b/labs/lab_01/lab_01/lab_01.md new file mode 100644 index 0000000..72c0f91 --- /dev/null +++ b/labs/lab_01/lab_01/lab_01.md @@ -0,0 +1,220 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +```python +"""Эмпирический анализ временной сложности алгоритмов""" +``` + +```python +"""Асонов С.В ИУ10-36""" +``` + +```python +"""Задания""" +``` + +```python +"""Задание 1.1""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def get_by_index(v: list): + return v[random.randint(0, len(v)) - 1] + +items = range(1, 10**5 * (20 - 2), 50000) +func = usage_time.get_usage_time()(get_by_index) +times = [ + func([ + random.randint(1, 3) + for _ in range(n) + ]) + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 1.3 +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def multiplication_nums(v: list): + multi = 1 + for num in v: + multi *= num + return multi + + +items = range(1, 10**4 * (20 - 2), 10000) +func = usage_time.get_usage_time()(multiplication_nums) +times = [ + func([ + random.randint(1, 3) + for _ in range(n) + ]) + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 1.4""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def horner_method(v, x): + result = v[0] + for i in range(1, len(v)): + result = result * x + v[i] + return result + +items = range(1, 10**4 * (20 - 2), 10000) +x_val = 1.5 + +func = usage_time.get_usage_time()(horner_method) +times = [ + sum([ + func([ + random.randint(1, 10) + for _ in range(n) + ], x_val) + for _ in range(20) + ]) / 20 + for n in items +] + + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 1.7""" +``` + +```python +import random, usage_time +import matplotlib.pyplot as plt + + +def mean(v): + total = 0.0 + for element in v: + total += element + return total / len(v) + + +items = range(1, 10**4 * (20 - 2), 10000) +func = usage_time.get_usage_time()(mean) +times = [ + sum([ + func([ + random.randint(1, 10) + for _ in range(n) + ]) + for _ in range(20) + ]) / 20 + for n in items +] + +fig = plt.plot(items, times, 'bo-') +ax = plt.gca() + +plt.title('Время выполнения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +``` + +```python +"""Задание 2""" +``` + +```python +import numpy as np +import time +import matplotlib.pyplot as plt +from statistics import mean + + +N = 18 +max_n = 10**2 * N +step = 100 +num_runs = 5 + + +n_values = [] +times = [] + + +for n in range(1, max_n + 1, step): + + + A = np.random.rand(n, n) + B = np.random.rand(n, n) + print(f"Обрабатывается размер матрицы = {n}x{n}") + run_times = [] + + + for run in range(num_runs): + start_time = time.time() + + C = np.dot(A, B) + + end_time = time.time() + run_times.append(end_time - start_time) + + n_values.append(n) + times.append(mean(run_times)) + + +plt.figure(figsize=(12, 6)) +plt.plot(n_values, times, 'ro-', linewidth=2, markersize=6) +plt.title('Время выполненения алгоритма') +ax.set_xlabel('Номера элементов') +ax.set_ylabel('Время, сек') +plt.grid(True, alpha=0.3) +plt.show() +``` + +```python + +``` diff --git a/labs/lab_01/lab_01/lab_01_1.1.png b/labs/lab_01/lab_01/lab_01_1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d1c64045559a217d69d9bb898debc39e687905 GIT binary patch literal 68961 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 ReI_cU3F91WFN|^C`ajeECz1dF literal 0 HcmV?d00001 diff --git a/labs/lab_01/lab_01/lab_01_1.4.png b/labs/lab_01/lab_01/lab_01_1.4.png new file mode 100644 index 0000000000000000000000000000000000000000..5b05a112d4c8a63a493f27c1ef2ea8c27782cdad GIT binary patch literal 90892 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 X`>Y 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

aNnssZ|29?oO-#5c9 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 literal 0 HcmV?d00001 diff --git a/labs/lab_01/lab_01/lab_01_1.7.png b/labs/lab_01/lab_01/lab_01_1.7.png new file mode 100644 index 0000000000000000000000000000000000000000..b667b972d82a83799cefce1511e2a9313ba4015e GIT binary patch literal 85277 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 fFP1<0E6>lU6L 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

l7R7&R8Vv#ME8g@ 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 G?SBA$(lb5) literal 0 HcmV?d00001 diff --git a/labs/lab_01/lab_01/lab_01_2.png b/labs/lab_01/lab_01/lab_01_2.png new file mode 100644 index 0000000000000000000000000000000000000000..83411cff759e14627363efee0fcc49583b69ff00 GIT binary patch literal 54592 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 typing.Callable: + """Decorator for measuring the speed of the function (in seconds) + + Parameters + ---------- + number : int, optional + Number of code repetitions. + setup : str, optional + Code executed once before timing. + ndigits : int, optional + Number of decimal places in the returned value. + + Returns + ------- + decorator: typing.Callable + Decorator for measuring the time of the function in seconds. + + See Also + -------- + timeit + Measure execution time of small code snippets. + + References + ---------- + [1] timeit documentation : https://docs.python.org/3/library/timeit.html + + Examples + -------- + Decorating an existing function: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> get_usage_time_sleep_func = get_usage_time()(sleep_func) + >>> time_sleep_func = get_usage_time_sleep_func(2) + >>> print(f'The function was executed for {time_sleep_func} seconds') + The function was executed for 2.0 seconds + >>> get_usage_time(number=5)(sleep_func)(4) + 4.0 + + Measuring the running time of a function for different parameter values: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> for n in range(1,4): + ... get_usage_time_sleep_func = get_usage_time(number=2)(sleep_func) + ... print(get_usage_time_sleep_func(n)) + 1.0 + 2.0 + 3.0 + + Using the `setup` option: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> setup = 'print("Start setup"); time.sleep(10); print("End setup")' + >>> get_usage_time_sleep_func = get_usage_time(setup=setup)(sleep_func) + >>> print(get_usage_time_sleep_func(3)) + Start setup + End setup + 3.0 + + Decoding the generated function: + + >>> import time + >>> @get_usage_time(number=2, setup='print("Start");', ndigits=0) + ... def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> time_sleep_func = sleep_func(3) + Start + >>> print(time_sleep_func) + 3.0 + """ + + def decorator(func: typing.Callable) -> typing.Callable: + @functools.wraps(func) + def wrapper(*args, **kwargs) -> float: + usage_time = timeit.timeit( + lambda: func(*args, **kwargs), + setup=setup, + number=number, + ) + return round(usage_time / number, ndigits) + + return wrapper + + return decorator From 9446da39d2619cc09c2560e8134d9c2583a9042b Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 28 Sep 2025 21:47:01 +0300 Subject: [PATCH 02/19] add lab files --- .../lab_01.md | 0 labs/lab_01/Untitled.md | 9 + labs/lab_01/lab_01/lab_01.md | 220 ------------------ labs/lab_01/lab_01/usage_time.py | 121 ---------- .../{lab_01 => lab_01_files}/lab_01.1.3.png | Bin .../{lab_01 => lab_01_files}/lab_01_1.1.png | Bin .../{lab_01 => lab_01_files}/lab_01_1.4.png | Bin .../{lab_01 => lab_01_files}/lab_01_1.7.png | Bin .../{lab_01 => lab_01_files}/lab_01_2.png | Bin 9 files changed, 9 insertions(+), 341 deletions(-) rename labs/lab_01/{Untitled Folder => Lab_01_praktika}/lab_01.md (100%) create mode 100644 labs/lab_01/Untitled.md delete mode 100644 labs/lab_01/lab_01/lab_01.md delete mode 100644 labs/lab_01/lab_01/usage_time.py rename labs/lab_01/{lab_01 => lab_01_files}/lab_01.1.3.png (100%) rename labs/lab_01/{lab_01 => lab_01_files}/lab_01_1.1.png (100%) rename labs/lab_01/{lab_01 => lab_01_files}/lab_01_1.4.png (100%) rename labs/lab_01/{lab_01 => lab_01_files}/lab_01_1.7.png (100%) rename labs/lab_01/{lab_01 => lab_01_files}/lab_01_2.png (100%) diff --git a/labs/lab_01/Untitled Folder/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md similarity index 100% rename from labs/lab_01/Untitled Folder/lab_01.md rename to labs/lab_01/Lab_01_praktika/lab_01.md diff --git a/labs/lab_01/Untitled.md b/labs/lab_01/Untitled.md new file mode 100644 index 0000000..01f385f --- /dev/null +++ b/labs/lab_01/Untitled.md @@ -0,0 +1,9 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 +--- diff --git a/labs/lab_01/lab_01/lab_01.md b/labs/lab_01/lab_01/lab_01.md deleted file mode 100644 index 72c0f91..0000000 --- a/labs/lab_01/lab_01/lab_01.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -jupyter: - jupytext: - text_representation: - extension: .md - format_name: markdown - format_version: '1.3' - jupytext_version: 1.17.3 - kernelspec: - display_name: Python 3 (ipykernel) - language: python - name: python3 ---- - -```python -"""Эмпирический анализ временной сложности алгоритмов""" -``` - -```python -"""Асонов С.В ИУ10-36""" -``` - -```python -"""Задания""" -``` - -```python -"""Задание 1.1""" -``` - -```python -import random, usage_time -import matplotlib.pyplot as plt - - -def get_by_index(v: list): - return v[random.randint(0, len(v)) - 1] - -items = range(1, 10**5 * (20 - 2), 50000) -func = usage_time.get_usage_time()(get_by_index) -times = [ - func([ - random.randint(1, 3) - for _ in range(n) - ]) - for n in items -] - -fig = plt.plot(items, times, 'bo-') -ax = plt.gca() - -plt.title('Время выполнения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') -``` - -```python -"""Задание 1.3 -``` - -```python -import random, usage_time -import matplotlib.pyplot as plt - - -def multiplication_nums(v: list): - multi = 1 - for num in v: - multi *= num - return multi - - -items = range(1, 10**4 * (20 - 2), 10000) -func = usage_time.get_usage_time()(multiplication_nums) -times = [ - func([ - random.randint(1, 3) - for _ in range(n) - ]) - for n in items -] - -fig = plt.plot(items, times, 'bo-') -ax = plt.gca() - -plt.title('Время выполнения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') -``` - -```python -"""Задание 1.4""" -``` - -```python -import random, usage_time -import matplotlib.pyplot as plt - - -def horner_method(v, x): - result = v[0] - for i in range(1, len(v)): - result = result * x + v[i] - return result - -items = range(1, 10**4 * (20 - 2), 10000) -x_val = 1.5 - -func = usage_time.get_usage_time()(horner_method) -times = [ - sum([ - func([ - random.randint(1, 10) - for _ in range(n) - ], x_val) - for _ in range(20) - ]) / 20 - for n in items -] - - -fig = plt.plot(items, times, 'bo-') -ax = plt.gca() - -plt.title('Время выполнения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') -``` - -```python -"""Задание 1.7""" -``` - -```python -import random, usage_time -import matplotlib.pyplot as plt - - -def mean(v): - total = 0.0 - for element in v: - total += element - return total / len(v) - - -items = range(1, 10**4 * (20 - 2), 10000) -func = usage_time.get_usage_time()(mean) -times = [ - sum([ - func([ - random.randint(1, 10) - for _ in range(n) - ]) - for _ in range(20) - ]) / 20 - for n in items -] - -fig = plt.plot(items, times, 'bo-') -ax = plt.gca() - -plt.title('Время выполнения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') -``` - -```python -"""Задание 2""" -``` - -```python -import numpy as np -import time -import matplotlib.pyplot as plt -from statistics import mean - - -N = 18 -max_n = 10**2 * N -step = 100 -num_runs = 5 - - -n_values = [] -times = [] - - -for n in range(1, max_n + 1, step): - - - A = np.random.rand(n, n) - B = np.random.rand(n, n) - print(f"Обрабатывается размер матрицы = {n}x{n}") - run_times = [] - - - for run in range(num_runs): - start_time = time.time() - - C = np.dot(A, B) - - end_time = time.time() - run_times.append(end_time - start_time) - - n_values.append(n) - times.append(mean(run_times)) - - -plt.figure(figsize=(12, 6)) -plt.plot(n_values, times, 'ro-', linewidth=2, markersize=6) -plt.title('Время выполненения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') -plt.grid(True, alpha=0.3) -plt.show() -``` - -```python - -``` diff --git a/labs/lab_01/lab_01/usage_time.py b/labs/lab_01/lab_01/usage_time.py deleted file mode 100644 index ef6c1a9..0000000 --- a/labs/lab_01/lab_01/usage_time.py +++ /dev/null @@ -1,121 +0,0 @@ -# --- -# jupyter: -# jupytext: -# formats: py:percent -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.17.3 -# kernelspec: -# display_name: Python 3 (ipykernel) -# language: python -# name: python3 -# --- - -# %% -# # %load -y -n -r 14:17 usage_time.py -import functools -import timeit -import typing - -# # %load -y -n -s get_usage_time usage_time.py -def get_usage_time( - *, number: int = 1, setup: str = 'pass', ndigits: int = 3 -) -> typing.Callable: - """Decorator for measuring the speed of the function (in seconds) - - Parameters - ---------- - number : int, optional - Number of code repetitions. - setup : str, optional - Code executed once before timing. - ndigits : int, optional - Number of decimal places in the returned value. - - Returns - ------- - decorator: typing.Callable - Decorator for measuring the time of the function in seconds. - - See Also - -------- - timeit - Measure execution time of small code snippets. - - References - ---------- - [1] timeit documentation : https://docs.python.org/3/library/timeit.html - - Examples - -------- - Decorating an existing function: - - >>> import time - >>> def sleep_func(n): - ... time.sleep(n) - ... return n - ... - >>> get_usage_time_sleep_func = get_usage_time()(sleep_func) - >>> time_sleep_func = get_usage_time_sleep_func(2) - >>> print(f'The function was executed for {time_sleep_func} seconds') - The function was executed for 2.0 seconds - >>> get_usage_time(number=5)(sleep_func)(4) - 4.0 - - Measuring the running time of a function for different parameter values: - - >>> import time - >>> def sleep_func(n): - ... time.sleep(n) - ... return n - ... - >>> for n in range(1,4): - ... get_usage_time_sleep_func = get_usage_time(number=2)(sleep_func) - ... print(get_usage_time_sleep_func(n)) - 1.0 - 2.0 - 3.0 - - Using the `setup` option: - - >>> import time - >>> def sleep_func(n): - ... time.sleep(n) - ... return n - ... - >>> setup = 'print("Start setup"); time.sleep(10); print("End setup")' - >>> get_usage_time_sleep_func = get_usage_time(setup=setup)(sleep_func) - >>> print(get_usage_time_sleep_func(3)) - Start setup - End setup - 3.0 - - Decoding the generated function: - - >>> import time - >>> @get_usage_time(number=2, setup='print("Start");', ndigits=0) - ... def sleep_func(n): - ... time.sleep(n) - ... return n - ... - >>> time_sleep_func = sleep_func(3) - Start - >>> print(time_sleep_func) - 3.0 - """ - - def decorator(func: typing.Callable) -> typing.Callable: - @functools.wraps(func) - def wrapper(*args, **kwargs) -> float: - usage_time = timeit.timeit( - lambda: func(*args, **kwargs), - setup=setup, - number=number, - ) - return round(usage_time / number, ndigits) - - return wrapper - - return decorator diff --git a/labs/lab_01/lab_01/lab_01.1.3.png b/labs/lab_01/lab_01_files/lab_01.1.3.png similarity index 100% rename from labs/lab_01/lab_01/lab_01.1.3.png rename to labs/lab_01/lab_01_files/lab_01.1.3.png diff --git a/labs/lab_01/lab_01/lab_01_1.1.png b/labs/lab_01/lab_01_files/lab_01_1.1.png similarity index 100% rename from labs/lab_01/lab_01/lab_01_1.1.png rename to labs/lab_01/lab_01_files/lab_01_1.1.png diff --git a/labs/lab_01/lab_01/lab_01_1.4.png b/labs/lab_01/lab_01_files/lab_01_1.4.png similarity index 100% rename from labs/lab_01/lab_01/lab_01_1.4.png rename to labs/lab_01/lab_01_files/lab_01_1.4.png diff --git a/labs/lab_01/lab_01/lab_01_1.7.png b/labs/lab_01/lab_01_files/lab_01_1.7.png similarity index 100% rename from labs/lab_01/lab_01/lab_01_1.7.png rename to labs/lab_01/lab_01_files/lab_01_1.7.png diff --git a/labs/lab_01/lab_01/lab_01_2.png b/labs/lab_01/lab_01_files/lab_01_2.png similarity index 100% rename from labs/lab_01/lab_01/lab_01_2.png rename to labs/lab_01/lab_01_files/lab_01_2.png From 5bae6201575be05c06c7e03c6595be447e78b000 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 28 Sep 2025 22:21:51 +0300 Subject: [PATCH 03/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=D0=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 20 ++++ labs/lab_01/Lab_01_praktika/usage_time.py | 121 ++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 labs/lab_01/Lab_01_praktika/usage_time.py diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index 792ed6a..cbca076 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -54,6 +54,10 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` +```python +![png](lab_01_files\lab_01_1.1.png) +``` + ```python import random, usage_time import matplotlib.pyplot as plt @@ -84,6 +88,10 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` +```python +![png](lab_01_files\lab_01_1.3.png) +``` + ```python """Задание 1.4""" ``` @@ -123,6 +131,10 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` +```python +![png](lab_01_files\lab_01_1.4.png) +``` + ```python """Задание 1.7""" ``` @@ -160,6 +172,10 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` +```python +![png](lab_01_files\lab_01_1.7.png) +``` + ```python """Задание 2""" ``` @@ -210,3 +226,7 @@ ax.set_ylabel('Время, сек') plt.grid(True, alpha=0.3) plt.show() ``` + +```python +![png](lab_01_files\lab_01_2.png) +``` diff --git a/labs/lab_01/Lab_01_praktika/usage_time.py b/labs/lab_01/Lab_01_praktika/usage_time.py new file mode 100644 index 0000000..ef6c1a9 --- /dev/null +++ b/labs/lab_01/Lab_01_praktika/usage_time.py @@ -0,0 +1,121 @@ +# --- +# jupyter: +# jupytext: +# formats: py:percent +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.17.3 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# %% +# # %load -y -n -r 14:17 usage_time.py +import functools +import timeit +import typing + +# # %load -y -n -s get_usage_time usage_time.py +def get_usage_time( + *, number: int = 1, setup: str = 'pass', ndigits: int = 3 +) -> typing.Callable: + """Decorator for measuring the speed of the function (in seconds) + + Parameters + ---------- + number : int, optional + Number of code repetitions. + setup : str, optional + Code executed once before timing. + ndigits : int, optional + Number of decimal places in the returned value. + + Returns + ------- + decorator: typing.Callable + Decorator for measuring the time of the function in seconds. + + See Also + -------- + timeit + Measure execution time of small code snippets. + + References + ---------- + [1] timeit documentation : https://docs.python.org/3/library/timeit.html + + Examples + -------- + Decorating an existing function: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> get_usage_time_sleep_func = get_usage_time()(sleep_func) + >>> time_sleep_func = get_usage_time_sleep_func(2) + >>> print(f'The function was executed for {time_sleep_func} seconds') + The function was executed for 2.0 seconds + >>> get_usage_time(number=5)(sleep_func)(4) + 4.0 + + Measuring the running time of a function for different parameter values: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> for n in range(1,4): + ... get_usage_time_sleep_func = get_usage_time(number=2)(sleep_func) + ... print(get_usage_time_sleep_func(n)) + 1.0 + 2.0 + 3.0 + + Using the `setup` option: + + >>> import time + >>> def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> setup = 'print("Start setup"); time.sleep(10); print("End setup")' + >>> get_usage_time_sleep_func = get_usage_time(setup=setup)(sleep_func) + >>> print(get_usage_time_sleep_func(3)) + Start setup + End setup + 3.0 + + Decoding the generated function: + + >>> import time + >>> @get_usage_time(number=2, setup='print("Start");', ndigits=0) + ... def sleep_func(n): + ... time.sleep(n) + ... return n + ... + >>> time_sleep_func = sleep_func(3) + Start + >>> print(time_sleep_func) + 3.0 + """ + + def decorator(func: typing.Callable) -> typing.Callable: + @functools.wraps(func) + def wrapper(*args, **kwargs) -> float: + usage_time = timeit.timeit( + lambda: func(*args, **kwargs), + setup=setup, + number=number, + ) + return round(usage_time / number, ndigits) + + return wrapper + + return decorator From a238856b01997d0f379615f7411a81c70a9330d1 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 28 Sep 2025 22:42:47 +0300 Subject: [PATCH 04/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 6 +++--- .../lab_01_files/{lab_01.1.3.png => lab_01.1_3.png} | Bin .../lab_01_files/{lab_01_1.1.png => lab_01_1_1.png} | Bin .../lab_01_files/{lab_01_1.4.png => lab_01_1_4.png} | Bin .../lab_01_files/{lab_01_1.7.png => lab_01_1_7.png} | Bin 5 files changed, 3 insertions(+), 3 deletions(-) rename labs/lab_01/lab_01_files/{lab_01.1.3.png => lab_01.1_3.png} (100%) rename labs/lab_01/lab_01_files/{lab_01_1.1.png => lab_01_1_1.png} (100%) rename labs/lab_01/lab_01_files/{lab_01_1.4.png => lab_01_1_4.png} (100%) rename labs/lab_01/lab_01_files/{lab_01_1.7.png => lab_01_1_7.png} (100%) diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index cbca076..88340f1 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -55,7 +55,7 @@ ax.set_ylabel('Время, сек') ``` ```python -![png](lab_01_files\lab_01_1.1.png) +![png](lab_01_files\lab_01_1_1.png) ``` ```python @@ -89,7 +89,7 @@ ax.set_ylabel('Время, сек') ``` ```python -![png](lab_01_files\lab_01_1.3.png) +![png](lab_01_files\lab_01_1_3.png) ``` ```python @@ -173,7 +173,7 @@ ax.set_ylabel('Время, сек') ``` ```python -![png](lab_01_files\lab_01_1.7.png) +![png](lab_01_files\lab_01_1_7.png) ``` ```python diff --git a/labs/lab_01/lab_01_files/lab_01.1.3.png b/labs/lab_01/lab_01_files/lab_01.1_3.png similarity index 100% rename from labs/lab_01/lab_01_files/lab_01.1.3.png rename to labs/lab_01/lab_01_files/lab_01.1_3.png diff --git a/labs/lab_01/lab_01_files/lab_01_1.1.png b/labs/lab_01/lab_01_files/lab_01_1_1.png similarity index 100% rename from labs/lab_01/lab_01_files/lab_01_1.1.png rename to labs/lab_01/lab_01_files/lab_01_1_1.png diff --git a/labs/lab_01/lab_01_files/lab_01_1.4.png b/labs/lab_01/lab_01_files/lab_01_1_4.png similarity index 100% rename from labs/lab_01/lab_01_files/lab_01_1.4.png rename to labs/lab_01/lab_01_files/lab_01_1_4.png diff --git a/labs/lab_01/lab_01_files/lab_01_1.7.png b/labs/lab_01/lab_01_files/lab_01_1_7.png similarity index 100% rename from labs/lab_01/lab_01_files/lab_01_1.7.png rename to labs/lab_01/lab_01_files/lab_01_1_7.png From e6e327c6e497f1a4c75cf28549dddc0df9f87760 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 28 Sep 2025 23:10:13 +0300 Subject: [PATCH 05/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 4 ++++ labs/lab_01/Untitled.md | 9 --------- 2 files changed, 4 insertions(+), 9 deletions(-) delete mode 100644 labs/lab_01/Untitled.md diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index 88340f1..5ae268f 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -230,3 +230,7 @@ plt.show() ```python ![png](lab_01_files\lab_01_2.png) ``` + +```python + +``` diff --git a/labs/lab_01/Untitled.md b/labs/lab_01/Untitled.md deleted file mode 100644 index 01f385f..0000000 --- a/labs/lab_01/Untitled.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -jupyter: - jupytext: - text_representation: - extension: .md - format_name: markdown - format_version: '1.3' - jupytext_version: 1.17.3 ---- From 55663ef4827c6b808664162dcc3370435e21c429 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 29 Sep 2025 00:02:25 +0300 Subject: [PATCH 06/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index 5ae268f..f469ba0 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -54,8 +54,10 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` +![png]("lab_01_files\lab_01_1_1.png") + ```python -![png](lab_01_files\lab_01_1_1.png) +"""Задание 1.3""" ``` ```python @@ -88,9 +90,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -```python ![png](lab_01_files\lab_01_1_3.png) -``` ```python """Задание 1.4""" @@ -131,9 +131,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -```python ![png](lab_01_files\lab_01_1.4.png) -``` ```python """Задание 1.7""" @@ -172,9 +170,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -```python ![png](lab_01_files\lab_01_1_7.png) -``` ```python """Задание 2""" @@ -227,9 +223,7 @@ plt.grid(True, alpha=0.3) plt.show() ``` -```python ![png](lab_01_files\lab_01_2.png) -``` ```python From b59b56a22a6d0c58ff6ab0d8b2354f725905825d Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 29 Sep 2025 00:22:24 +0300 Subject: [PATCH 07/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20lab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 10 +++++----- .../lab_01_files/{lab_01.1_3.png => lab_01_1_3.png} | Bin 2 files changed, 5 insertions(+), 5 deletions(-) rename labs/lab_01/lab_01_files/{lab_01.1_3.png => lab_01_1_3.png} (100%) diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index f469ba0..13ee5de 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -54,7 +54,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png]("lab_01_files\lab_01_1_1.png") +![png](lab_01_files/lab_01_1_1.png) ```python """Задание 1.3""" @@ -90,7 +90,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png](lab_01_files\lab_01_1_3.png) +![png]("lab_01_files/lab_01_1_3.png") ```python """Задание 1.4""" @@ -131,7 +131,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png](lab_01_files\lab_01_1.4.png) +![png]("lab_01_files/lab_01_1.4.png") ```python """Задание 1.7""" @@ -170,7 +170,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png](lab_01_files\lab_01_1_7.png) +![png]("lab_01_files/lab_01_1_7.png") ```python """Задание 2""" @@ -223,7 +223,7 @@ plt.grid(True, alpha=0.3) plt.show() ``` -![png](lab_01_files\lab_01_2.png) +![png]("lab_01_files/lab_01_2.png") ```python diff --git a/labs/lab_01/lab_01_files/lab_01.1_3.png b/labs/lab_01/lab_01_files/lab_01_1_3.png similarity index 100% rename from labs/lab_01/lab_01_files/lab_01.1_3.png rename to labs/lab_01/lab_01_files/lab_01_1_3.png From d8be6b4ab540df8cf0201f6173f40e6b81e1beb0 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 29 Sep 2025 08:40:31 +0300 Subject: [PATCH 08/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B0=D0=B1=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index 13ee5de..59f5b24 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -54,13 +54,14 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png](lab_01_files/lab_01_1_1.png) +![png](../lab_01_files/lab_01_1_1.png) + ```python """Задание 1.3""" ``` -```python +```python jupyter={"outputs_hidden": true} import random, usage_time import matplotlib.pyplot as plt @@ -90,7 +91,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png]("lab_01_files/lab_01_1_3.png") +![png](../lab_01_files/lab_01_1_3.png) ```python """Задание 1.4""" @@ -131,7 +132,8 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png]("lab_01_files/lab_01_1.4.png") +![png](../lab_01_files/lab_01_1_4.png) + ```python """Задание 1.7""" @@ -170,7 +172,7 @@ ax.set_xlabel('Номера элементов') ax.set_ylabel('Время, сек') ``` -![png]("lab_01_files/lab_01_1_7.png") +![png](../lab_01_files/lab_01_1_7.png) ```python """Задание 2""" @@ -217,13 +219,13 @@ for n in range(1, max_n + 1, step): plt.figure(figsize=(12, 6)) plt.plot(n_values, times, 'ro-', linewidth=2, markersize=6) plt.title('Время выполненения алгоритма') -ax.set_xlabel('Номера элементов') -ax.set_ylabel('Время, сек') +plt.set_xlabel('Номера элементов') +plt.set_ylabel('Время, сек') plt.grid(True, alpha=0.3) plt.show() ``` -![png]("lab_01_files/lab_01_2.png") +![png](../lab_01_files/lab_01_2.png) ```python From 61598b30fc6d24d3719533cefadeb4df1f03e2f2 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 5 Oct 2025 18:30:49 +0300 Subject: [PATCH 09/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 4 +- labs/lab_02/Lab_02_files.png/Lab_02_diagr.png | Bin 0 -> 101661 bytes labs/lab_02/Lab_02_files.png/bucket_sort.png | Bin 0 -> 446847 bytes labs/lab_02/Lab_02_files.png/merge_sort.png | Bin 0 -> 691236 bytes labs/lab_02/praktika.md | 449 ++++++++++++++++++ 5 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 labs/lab_02/Lab_02_files.png/Lab_02_diagr.png create mode 100644 labs/lab_02/Lab_02_files.png/bucket_sort.png create mode 100644 labs/lab_02/Lab_02_files.png/merge_sort.png create mode 100644 labs/lab_02/praktika.md diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index 59f5b24..e1e4f5a 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -34,7 +34,7 @@ import matplotlib.pyplot as plt def get_by_index(v: list): - return v[random.randint(0, len(v)) - 1] + return v[random.randint(0, len(v) -1)] items = range(1, 10**5 * (20 - 2), 50000) func = usage_time.get_usage_time()(get_by_index) @@ -61,7 +61,7 @@ ax.set_ylabel('Время, сек') """Задание 1.3""" ``` -```python jupyter={"outputs_hidden": true} +```python import random, usage_time import matplotlib.pyplot as plt diff --git a/labs/lab_02/Lab_02_files.png/Lab_02_diagr.png b/labs/lab_02/Lab_02_files.png/Lab_02_diagr.png new file mode 100644 index 0000000000000000000000000000000000000000..b021500aca0988e69545a77a989e652f2378f8a4 GIT binary patch literal 101661 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

;_S0#76%> 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%0D`l13Vh7sHUy4G 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 literal 0 HcmV?d00001 diff --git a/labs/lab_02/Lab_02_files.png/bucket_sort.png b/labs/lab_02/Lab_02_files.png/bucket_sort.png new file mode 100644 index 0000000000000000000000000000000000000000..d071a4c0d40a3ef653512cc237b74f04f0ab3c42 GIT binary patch literal 446847 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

LdF6x#MfUo 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

$uYKoPWv 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≪kb5to=cq3y5-gr>hLel#DX5Ey;oTD$vK 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


2;gOR*!Z;Hs;bazyyx-78W3s< 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Ξy*2-Z9XJ*Nz_D=QtuX6<_dxBH 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%0A|@dHV)kJ>5H>EkZsa5M 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 0: + INSERTION_SORT(buckets[i]) + + // Объединяем блоки + k = 0 + for i = 0 to n-1: + for j = 0 to LENGTH(buckets[i]) - 1: + A[k] = buckets[i][j] + k = k + 1 + + return A + +function INSERTION_SORT(A[0..n-1]): + for i = 1 to n-1: + key = A[i] + j = i - 1 + while j ≥ 0 and A[j] > key: + A[j+1] = A[j] + j = j - 1 + A[j+1] = key + + +## **Задание 5** + + +### **Сортировка слиянием:** +#### Достоинства: + +Гарантированная временная сложность O(n log n) для любых случаев + +Устойчивость - сохраняет порядок равных элементов + +Предсказуемое поведение независимо от входных данных + +Эффективна для больших объемов данных + +Хорошо параллелизуется + +#### Недостатки: + +Требует O(n) дополнительной памяти + +Медленнее in-place алгоритмов на небольших массивах + +Рекурсивные вызовы могут вызывать переполнение стека + +Константа в O-нотации больше, чем у быстрой сортировки + +### **Блочная сортировка:** + +#### Достоинства: + +Линейная сложность O(n) в среднем случае + +Эффективна при равномерном распределении данных + +Устойчивость (при правильной реализации) + +Хорошо работает с данными с известным диапазоном + +#### Недостатки: + +Вырождается до O(n²) при плохом распределении + +Требует знания о распределении входных данных + +Неэффективна для данных с выбросами + +Требует дополнительной памяти O(n + k) + +Сложность зависит от алгоритма сортировки блоков + + +## **Задания 6 - 11** + +```python +import time +import random +import matplotlib.pyplot as plt +import copy + +# Сортировка слиянием (Merge Sort) +def merge_sort(arr): + if len(arr) <= 1: + return arr + + mid = len(arr) // 2 + left = merge_sort(arr[:mid]) + right = merge_sort(arr[mid:]) + + return merge(left, right) + +def merge(left, right): + result = [] + i = j = 0 + + while i < len(left) and j < len(right): + if left[i] <= right[j]: + result.append(left[i]) + i += 1 + else: + result.append(right[j]) + j += 1 + + result.extend(left[i:]) + result.extend(right[j:]) + return result + +# Быстрая сортировка (Quick Sort) +def quick_sort(arr): + if len(arr) <= 1: + return arr + + pivot = arr[len(arr) // 2] + left = [x for x in arr if x < pivot] + middle = [x for x in arr if x == pivot] + right = [x for x in arr if x > pivot] + + return quick_sort(left) + middle + quick_sort(right) + +# Функция для измерения времени выполнения +def measure_sorting_time(sort_func, arr): + start_time = time.time() + sort_func(arr.copy()) + end_time = time.time() + return end_time - start_time + +# Генерация тестовых данных +def generate_test_arrays(n, array_type): + if array_type == 'sorted': + return list(range(n)) + elif array_type == 'reverse_sorted': + return list(range(n, 0, -1)) + elif array_type == 'random': + return [random.randint(1, 100000) for _ in range(n)] + return None + +# Основная функция тестирования +def test_sorting_algorithms(): + sizes = [1000, 5000, 10000, 100000] # n1, n2, n3, n4 + array_types = ['sorted', 'reverse_sorted', 'random'] + algorithms = { + 'Сортировка слиянием': merge_sort, + 'Быстрая сортировка': quick_sort + } + + results = {algo: {arr_type: [] for arr_type in array_types} for algo in algorithms} + + for size in sizes: + print(f"\n--- Тестирование для n = {size} ---") + + for arr_type in array_types: + test_array = generate_test_arrays(size, arr_type) + print(f"\nТип массива: {arr_type}") + + for algo_name, algo_func in algorithms.items(): + time_taken = measure_sorting_time(algo_func, test_array) + results[algo_name][arr_type].append(time_taken) + print(f"{algo_name}: {time_taken:.4f} секунд") + + return results, sizes + +# Визуализация результатов +def plot_results(results, sizes): + array_types = ['sorted', 'reverse_sorted', 'random'] + algorithms = list(results.keys()) + + fig, axes = plt.subplots(1, 3, figsize=(18, 6)) + + for i, arr_type in enumerate(array_types): + for algo_name in algorithms: + times = results[algo_name][arr_type] + axes[i].plot(sizes, times, marker='o', label=algo_name) + + axes[i].set_title(f'Тип массива: {arr_type}') + axes[i].set_xlabel('Размер массива') + axes[i].set_ylabel('Время (секунды)') + axes[i].legend() + axes[i].grid(True) + + plt.tight_layout() + plt.show() + +# Ручная трассировка для небольших массивов +def manual_trace(): + print("=== РУЧНАЯ ТРАССИРОВКА ===") + + # Тестовый массив + test_array = [64, 34, 25, 12, 22, 11, 90] + print(f"Исходный массив: {test_array}") + + # Сортировка слиянием + sorted_merge = merge_sort(test_array.copy()) + print(f"Сортировка слиянием: {sorted_merge}") + + # Быстрая сортировка + sorted_quick = quick_sort(test_array.copy()) + print(f"Быстрая сортировка: {sorted_quick}") + +# Запуск тестирования +if __name__ == "__main__": + # Ручная трассировка + manual_trace() + + # Основное тестирование + print("\n=== ОСНОВНОЕ ТЕСТИРОВАНИЕ ===") + results, sizes = test_sorting_algorithms() + + # Визуализация результатов + plot_results(results, sizes) + + # Анализ эффективности + print("\n=== АНАЛИЗ ЭФФЕКТИВНОСТИ ===") + for size in sizes: + print(f"\nДля n = {size}:") + for arr_type in ['sorted', 'reverse_sorted', 'random']: + merge_time = results['Сортировка слиянием'][arr_type][sizes.index(size)] + quick_time = results['Быстрая сортировка'][arr_type][sizes.index(size)] + + faster = "Слиянием" if merge_time < quick_time else "Быстрая" + difference = abs(merge_time - quick_time) + + print(f" {arr_type}: {faster} быстрее на {difference:.4f} сек") +``` + +![png](Lab_02_files.png/Lab_02_diagr.png) + + +## **Ручная трассировка алгоритмов** + + +### Сортировка слиянием для массива [64, 34, 25, 12, 22, 11, 90]: + + +Разделение: +[64, 34, 25] и [12, 22, 11, 90] +[64] [34, 25] и [12, 22] [11, 90] +[64] [34] [25] и [12] [22] [11] [90] + +Слияние: +[34, 64] + [25] → [25, 34, 64] +[12, 22] + [11, 90] → [11, 12, 22, 90] +[25, 34, 64] + [11, 12, 22, 90] → [11, 12, 22, 25, 34, 64, 90] + + +### Быстрая сортировка для массива [64, 34, 25, 12, 22, 11, 90]: + + +Опорный элемент: 12 +Меньшие: [] | Равные: [12] | Большие: [64, 34, 25, 22, 11, 90] + +Рекурсия для больших: +Опорный: 25 +Меньшие: [22, 11] | Равные: [25] | Большие: [64, 34, 90] + +И т.д. до полной сортировки + + +## **Анализ эффективности** + + +### **Критерии сравнения:** +#### 1.Временная сложность: + +Сортировка слиянием: O(n log n) в худшем, среднем и лучшем случаях + +Быстрая сортировка: O(n log n) в среднем, O(n²) в худшем случае + +#### 2.Память: + +Сортировка слиянием: O(n) дополнительной памяти + +Быстрая сортировка: O(log n) дополнительной памяти в среднем случае + +#### 3.Устойчивость: + +Сортировка слиянием: устойчивая + +Быстрая сортировка: неустойчивая + +```python + +``` From 629e0815212a570c7e65966a9abce6418cb4ab05 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 5 Oct 2025 18:53:45 +0300 Subject: [PATCH 10/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_02/Lab_02_files.png/Lab_02_diagr.png | Bin 101661 -> 0 bytes labs/lab_02/Lab_02_files.png/diagr.png | Bin 0 -> 97470 bytes labs/lab_02/praktika.md | 329 ++++++++++++------ labs/lab_02/sorting_comparison.png | Bin 0 -> 77877 bytes 4 files changed, 218 insertions(+), 111 deletions(-) delete mode 100644 labs/lab_02/Lab_02_files.png/Lab_02_diagr.png create mode 100644 labs/lab_02/Lab_02_files.png/diagr.png create mode 100644 labs/lab_02/sorting_comparison.png diff --git a/labs/lab_02/Lab_02_files.png/Lab_02_diagr.png b/labs/lab_02/Lab_02_files.png/Lab_02_diagr.png deleted file mode 100644 index b021500aca0988e69545a77a989e652f2378f8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101661 zcmce8hd8Erlo<8D*DU$<7|7BqNFvS)o!tAuD86$RfABt^yPo^z_xp}(oab>K$8lZ(>Z+%=((Iz4qN3WWtR#P)ifVl&71bJ# z%^UHP1Fv!&@qcR^&!0X?l~&I-i2qn`DR)keiYg;?%hKfy_-|@EC0%@ou9W;)Q(^nc zjEZXYg|fVymaEaf4i_iJ=C%*xqwlQUw;ek1Dq)sq^H(`_Ik`1*+tma2?!9+ugEbe| zW}W9sJ05iIT(7Zyjhy?aH1*((#YeN-oCls*tACsc`|VvHl~h|>UvKRk?=cXi??jLK+#UQ7aTm*DX`g>i~MtP z&;FXsS-z=G{`GR(*LSa;l9ykfUcA89`}zK&ewEP8ch}n-2EV@OIv29WbFSO}-;az_ z+!f@bhhcTfxstj_3bg`F}q#lJ`~l--rMAH}BW~KR+M?*vY>^Zf^BJ zjc^!uw?qEKo0dT*mivmHo}OO@o!s70`@|;l@&@`gT1|CM`O`Bnh&%k=e7)^m(NGJG zuidC!zCoUWAfrN6R_CQ7mxQCrMhiA;YVTCgz?c6_yR2C2YHO>;%iI^J`9{&M@yO!Z zJbNU$DWGX^%IN;bOCMTVE`0mAYEDf}9V6uy_B~bK^axAg@hzWZPez!JYA0@p;%ZM} zR7kke^b%hW`rDkM`Qpq@%7t{*;h#BC5;yqv<}Np!QBt~u|8!Z-H!AjwI$S)r*Lbhy z_B+0(w6$mcwVuMSUTY+6)K1ZPapp1Kw>P@s?{5szGcyk?(g>K}&SYPK~pWjdJo2r*%)lAvR%F5bVux0ga5c6SS zmk|SQW%7kpzK2{4cRU__ymYDV=`qjMe#Khw*6dZ*SSrNXLTNx}y5U8@X+=vy1MwHOmX_0}u5_ zmJJ0j6q~vlJy~3Jj9(lrN}rWbOOY8}w#gkGjpg@wJ39Q`Ej?E+^^H-{(=PADt;%6G z9wQ~QKV>Bj$Za1nl=hf08~UDV-J0o#*~+@~aqT;sj_OSFn$0vcU%k8XP1oeUmK+FK z%y+BU++bh0I$UHt($eqU)ixaOG49>aHoWRlF<$BQroGU3pYr)QAATSDT-({s&e7iG zU8Bp6wgnxFG@oMWsfFe8P7hAIo0yoq(t1rVBqS7BXThiS>O^_q&VYOOegz#azBJxb zt`sJ3V8GT_^Te_$Z2v_8Cikg7a##;nzP;M9b=OfY35ll|oB{FTrorbI(v6NBrnI@0$C&k53qE`7qvF zG59lwA4@CAv?9ddy%Y75n({bl538{mC!ex;5Zgle(YD%XHpTu-tM!yoPDL~ z?jikm_mcH})i2y1wR&EesE^5=Rq@=XDB9!xVgt<+7o*Z7p zZDoGIULy8iYnDHUwELIm$_x@NBehlG2OgTUM%R7DxL@gbe+(b&^vn-o3OivfDEL>BK zlTr@lkha347P(LN)JBPjvC;j^zH+^e$p%X8&$s~>OoU|hH@>tn`c*yXm<+K>9rT*7$Os4AR(sOdEHN89+5EN8ulPluzTM0o{@#F2tVMSt+|uqA4c^4zdJ|)nVcjZxsQbp)FFDm1v4`pUdf1cXnX4Zi%(m%x z8t=UjaJXbCtUgw<2`dWmQU1&s8VY4%q+oQSj6v;7y0Pr8qgEfaN0*JGY@PrsxYN{U|pc}JioM%?i(V1v+=uiQ^Xub+vR@e)HO zY>-(Lz&w7sl|LA{sgkeZPNe-KM?D^rF%Cv3u=S zmgc2e5_xIxgh{9T=}4rg3(3ppqD9StjmV_cMIXL453F+=1Und$?Bv%m`}^(n8{MqC$lyK3`@IEx%L{Y;yg zl|=^iY=l5J0-(IM_OL6K*c;;#BM%?lh=9OA6TDt6)-N{nc23UFMk}*lA8rX4zJG+> zmT_Z9=WA1whW29&P6n2QR7;Pz5tc44p~rf}ta5vt&x#w8NXq`lSi8+B7c7wxfszD` zi&ajZTuWj#HaKE6NslDRI1m3UPcK;stm)f(?AT5pA0MW}Mk+uWb5l)fQNrdl*S^2G z+@5FuXWHF+Veo+W()ejIng9X;p`n(uBOSR#tkqRjmp|R14&Hq{1W0GR(_?f8BV${ z`{m_{%?!6yU@LtJ+{y2{IGo#>Ya2g1xY<{o%Js>*d}g&bkIkcOOO~1ZOB2eCp42FG z6??Vj+3(veYW*vtg5$Qqw9Pi)~1ledy7A;}xjNosXzk_s6!ZlbRSF$4SfS<_&)gsY^OGb&VE>R&74li} zRE?GJ>#?~ndhNSFnnC`j<6WMm`nE;o_jc?PyYZJXQ@}L04cjOTZ+%w1(~OGFU=udxhg-TA#ofEN`Amd>GM-o{N~QDgh7VRp zzvf)KK=4yz(&>Zx?*#C+>s;h)a@$(pUEhtpj^t<@$$B!SaJKjIWC$6Q>lIfIP8e1pnGE!!dby+w{%=sS+o}THD z-gX9tQvUS9Pl)jkxv67SPa{q9;;}U}H17EMbq@`l4WQq@nU?l<1*ea^bEssNO^1Z1 zmsgG>@=&s2f%Bt7`VlrA?>m~G)gcn7P$&pVK}?5Cu&#eTTb78Wla-YXWIn7)u0l;c z?tL(CHbp;I@VHI;FGNX_elW#X+v+StPKR=sBeKOvdqmv1vmPi#+TmU#v$(QXv5CWay>-YtLs;(7^j8U}ZiMG<;fFsf4ol`kM~&-?<(b@!sG(}en7q@SqU?SVB!4lha93qPQ-2C zG4j+uuSvBqv$6)1l*sPcvxo7p5gXDG`HIU3Tgrv>et%AHE`I)?eWyd-BHE_b5|A1z zabw~?+&~R@hw){RbheJ0zIE%C9=jA5*NK#Pk840;7t##&?BDO#TM^onX?}LfU7A9n z-@g6B%JL%F)MSPhriXr5i;_sEsV1!eX!hdl6CP1f#Ey>`jX&-ASvto<@7?>-*$mi8L*vA)|)M*Iq>79FEiU{ zX}>)U7;=*MR9b4g80ALqP9jB`K~(i){-$I#&iBs4fdVx@Z~S$V@b&ez@t_5IWJaa( z{swsRd(iwY>`!UUOE1wMGexq}(_~L$L zdOH7gK0d1kqjo_Q3aXcYB9Gax1ummfS+;+t-6>kHPa@~$I}Os0kB<|ixaZW}OSx@1 zf=fCnJKL3yj9wh=9vw}ud-=~H|44LQ+2_ya^Bv50iCR}~;`BVBuD%_ZvLC?HAkXd= z{#E$W2P!H|E(x2D`7gXg!YLg4w8d$(lfB4D?Zk)&?eyA?>Iax!(X-?Jb%Q zS-)vhQ}z{2>|x{{tlLDV{?1w#5DF0fS4a>><);wHANBU$bMD`&vZIftX;b{ zdt4Jw;s5c{32kjs_-Sb|B4;OIA3cBm969|Sw*7naGhuiBjr`RG${fC1)3mc{vaBCK zm4MG;uf_g+T@e;q!o~P=xZk5@;ISL;Q4nC-GEg7ei(t?{Ucs3xA3(3Shr&yvtgNgz z%d<^eyK!jx=(X>`z^?f&N~`s2 zYxe=Bnvm=1Wo^K!DE9JjpZTYZutVs{#hKwGx5<85R^dAcmtm2Suh=WD=7hz?#SO6J z+1fb--Me=}gAwbKQeJ}$)-yV)=ISbj>|~0YaPQx*fpJApz|Q#G=g^4aR^rCrvfJBa zT-(Z$5_u76#(*^mPG4GDA{iaPS3bgA!s*Y6WYyR|KQi`ZWMt&t9}P_WH860x#C!Q- ziMKRQcmN6b&*at>udaA-&;GcK&n5y|%%^ReJr`5jeZqO0oO-&E^xl2@a)z!0i680! zHj7#o4zDQ<#@Vrh?k+7gWH7T@v*$QjSd;*i5rW>#a9zCNGVGFXKYpKVx0r3k|J6*?7H86ag;1MKj^#hT_E$Nfbf=*8jRn;*m#I zMl#lSk8TH1#rwf~W!^H*{qO4%gCo6yF{khED#sLo5L@fgt^HDk74w3W`#XOiZr`3g zYuc4l#U1;{%9)LixQ<=AyN$CR;D&nJwq#TrQ$sDG5BHr$*tEUA>mShW=U~=TT3T9h zpH#xQvB2xVP{xbH&*W~i2%Bvt$QA6t@9VZUrJp{5zqvH^r_s7S?;%o8 zuakt^-`B}30Jwx2d1CCnM^rT8G>6+AY*=BFvdtkJ(tI>la=dE^_W7BefRvl-=Q6O^l8!xt=KZT+a zEqedhweLr)zHk}2c5kq#jZEmsE-No@%(L(Hta@2iCjU8pAg>b>1Yu>J-sVR7`JXeX4k&Q7mh@!5W34U-itt*a5b6N z<$n-I`aGmRAaxIZd(D8DXZqvqB!v$&i7l4Jnn;6L`GJ_+*^T9 z#lZHxcw&@jT;i=)b67Wm)UBvA207nVe;srpKo)$k2==dHFv~~mp+c9MWI!?kY#n6CYpI)idU`%|>@DrK+s@8@h~}ys?|McB!0`D0O&DlvgR`uxu1++o3e(Gd*gk}v z8xRmsnW+N$7r_I2a$|Vao#w0ig@ktC|>%=2D;&y;R9YaInF zSUD1)EOqGF+I8y=8WoBKdf4^V)~aAWkZ*x|7`AUep`*hjE-nr@J>a$-yOWd=JUoim zZU`vTAGhr!1?CZ!&0DtY6A+*UFzT=wKqx>hxr3GUHTyoqYb;<4gth3k_-^d7gBpqJ zdBUlc!?IZqOuI`bBqZRow>*~O+lAf(9pnx(4bFS?{r>&T(WPNLJ8d%NHid$+PQ^q0 zx0e@+DQq`91d`MzYteAbC!S8i`v1wHNQnPQoC)d<`36(NZBI}=|JId7xZF5(xK$ZKY1_Io$y z>1-~Bm4g(IUyiXJqSCfL?+kIFJePaxb$1M~o;npA&b`^!ZpdQ6xp!v=7OqF}$CeFp z+XMINMqtKPmDzv^Q2fMzC_kU1xD|kR!ukn!0Du5c##T^Zir}1V^#^o1M7FFj4?y{~ zONWw~)acsgI&aHBow;`ei%)9ihpCGJR|+LCkyoK#QN_N&b9!~WcWG5!EA4`3=$70P z_aeX<4vuaIcnP(19`-%%}lo+Y*ZoQA^3WKu zz<`_%BxJHlI{ynvzhK`W=#jk0Y^HGN-Od;8lsOJ&qqy%`J}+v|Yd;1}st&+1dTv$X zAs0VFM-QR)qQvYIXJ58uwps&|s{@pbp7Z-!9>g4gs<}StXFFWtMcY&^ zzu=|ur(;hvDsopyoPcgD=JaPfgepP$4HL%qHL;mMCPX3uC`Z?&abb~@aFQhaq)H}NksvTc52)*&Cydv`rzT|51Bdqr#@a5n44K(y3d4!*l zzlsIV&YU|}e(6ZNMwHPPb4yFptkytz)>I1L6G6j72&oGFE*?;PP+dD+DACu}j*>dcPzq$6XniCwt~W$H=uyS*=LUP$`6`T^~o}S6c*-7p`c`Qv*mMQROkkWu7y%wt*_wi%7}vR zn=!t7)WWwvo&a3S&byY?`lqAdczV&yF4zdnFm;4-1R<>H(J|PRENVgY z!`}BFuJ-MfMsJ!-yswhBwwW%Ej7%I9OU9qB{eW-~d01%gN?zS*^hGyS2TI>Vt3$~Y zJ}jR{2+d0EK9!lZxGd}ppADC7w6)DY`fdPv98DXVSY1yxv&|DOgsh-)-wvDEPIiDw z1QA5%&S;t!fD9*3o!a6R#MkaK3*C+sEr+a7-vca-Pfr)6d~i-jko$CwyV3^x_cUr zEZ%@xiDF`gjMEvY#s7nPG=^*iv8d3d+`ZyPeM3XHA-lOW(2dwai4B8dr9HLpzH&dla(!z@_X<%&h1nfH&`GVuQe|yd|>XvtDG)8 z&ho9+oa^_Nc=0~kt-v7d9m-Hw30JAmwf_AK)4BjzBx6!cp1&DM0&3I44eg z82$XaD~a;=`cQBFa^t&CuXqhchpR1PCFd!Q$1PwOE7?zP_K96nYo~I44lkwJcx!81 z#Fe-{=O}$*CyP&h#g{1=Qd4bwzbDtGzpyv&Rpl06uBAn-$5Qr7>35BqrMZfeo1?jv z@hraTzo8-7on}<%`}NpKW@$x$)6?at;ee){vfHK|MGS$7cF=?tW=9)91k`OgT=)Sh zzWgoVnK9112aiezBn8JhUus%Q?NSRl^?t~o9cg#6{~WZ{{p3p^wHk;rUS~1csSSWN zx9K$>w?(UN-YgA+Xw0wZWg=}j-{PWmo2Vhe4|^he{~bGa>;}S!2ihmmQ+~JklrHdv3pxrT5o7zcTyOpk@@d4I$IdM^OLw*T>eJ z=JYCqO9~V?o4CUrumN8Z6}Hf^OROhqecc^u24ZJ`XXgN{7jTyNgHqVRz;Ft@o>kks zLr4`S5S3Bh5akMR4(zz+bn^vTc8NzI876=R9z;akt?46VMFO5U+p5vm*k^es0107{ zahX?!1)|{x)IP(L03{xZWpJHE?_hE~kDy=(in2KGg)1b%g7U}ubEEgn6v%R)zKX0Q z4@ozt`ZFH$oFC23SLz9CQ5dg%2I_z?(hz|(vnaTQgZc}D+8-v&#AcA{;WA5Yjmlq_*!9czgT#&6bCq`F7p)A&kbA9;2l7CblM@ZmOaSeUvpGtyDBFI4IigPN2aaFUqU z!ci({LeEf?e@nR#3WXeyq%GGr`D!x-tP7zwK%LLSP!%QVA_yZ@;ndf&P_K!1ig>Uv zvVS^@Bw^XA6LE}zcM0SLk#B%#GC*OP=~_T3Eh{S{f+RRjB?}84LcV|t!kCdo4!PD( zpvL-Vb^s^{vVcGig3&brJ@X&OPQ*hF1r4}R&qHgy2?mvr zrr|L$wcs;|c#hHn7#<#(Ps_7i4al61%YN(Sc>fgkW+cnRJ-TlBVQJa(?L2LbPr=86 zXjLKW!98CO)fWWzQYgZ3CBR$>h)72`x6zVS8Pw;bh$LPHs24&u?PADMphgJk|NC`v zTq4#^jKqyVSnkwwu4*IUorakB8paODJm$5LLWJjp1A-X8K!$=t_zjwzFxFbBdXGV! zb~{OAv|7`0NJT;eky#o$^+tyuSc51)G&}jer0O3B?E{17)MytcMjn-j8w71cTY-yj zZ+^bN8`yg{>=lv8GHJXt*n2$>Pje(dz%88Z^Z>sO?Tq(A8rx$&?L>?+QGCELilAa) zRJaTbCN=#{6Vm}pqawD>Ym6-_li$Dzwehm?V5<^%X`q1i!R4{<(4qU_;z65N*4Mwp zua>|G0}8=;{x6O6+>nLBUu|_FyYLMIvc@$GRA(h1XCiYv_87 zZS4IX`>QUe!p*V6{&T8q)tz(6_*d#qJ)bZ(|KPJac2zVw$+gc%>&L#k&#vT0xEzn; zZi|y0ggX?A7OFg|yAUKhZ*OmTMa8hNuus1}-X?SxEXduU!1hW@$3mV38_cis<{4g{ z3>WyVEXM)W_fCVKpp}7b*#Nv?Cx#&UyVWwjdE>R5R%;-PNvK0#l1^_k@|xC$dKGot zmIKCt%bJbbE?5b-q_NfDtOm-BY&M%HfHxS53bo^;)lA{O6=ZP|qXu^PvCMJ8K>X|{1 z6EH4j1D+J9F*7&6au#L)n1t=b5DdV;&5U-bsjAX}Z6Jj8ms8s^%&O?Yl$5M2@T2~E z^@`VfariiyV3=b96YqVx$ooKR=Rd)yNoA(`7e6w@xF7B9q}SHg4(X_@WC-oT1h^DS z*60tZj`hE1Fq7nt`I;(b6K?jMBgE0RW_LxGfk#ZrYo^g$DzYzbZ`yXg#M_I&*U8C! zpz#pI;lX2(aN>ml;V#Eh_5BjQfH_!X_M^A+&<7|SjpGF zj36&PhVG3;g3@;X*@!WO!z|}vJ*=z1#0TNwr-1EIFqolK%5BqN+yGIx+~hJMz>i^P z5CxEXD;gR?K@nkZFw3kiIfB5%Wy}yk@CkUbQ*Yd-zvHW@{qZ2b!MPjnnzN8QV z?NJ35AJzRP_)4Bb8N~9!i$b1DAhI5FJsd<|h!xNJ#|QAp$|@>mU!N-z!4vMvTktMq zx=q6K_7XXrEMt^!SE^otY$Tfi3>88@h*V;hgL+;YZChLg0%bDW%vp?$*!6>1gnUt0 zHx_xgfTaa@fv3*&n6<$MNxC7Db5Vd)b&wvw;o+Akr-h-+pyCbzVXT@A6R9dP44DfH z3xM1Q+{!8GJ|OEsTcI2kbDQ8sfFn*M!q5coIu?ka3>Nevk|)uNVC!p^w!X#1C@-kH zr@ZI4=X({;yTjjaUl@(0*$yCOqoLg+Y#no^vO34ialwMFqF1=;?fZ!iPYX$I?3^k0 zb4?DmbCkgR=-gy{Be@NYCEN(LQDM4C_+&$Z0F!W zeBgqY@Q%NKQp*sm@T5|LeFN5l^sVl?5blUC28Dq*q0k|m+EzXX%gsB92d=7(M z*q1mkiap)H4u141-MM3j9OR`q)(XH1lKEfjX7S`DyJ3c~jrXgiP+_ORIYQhc#Ppm! zjmnNJ?u1jDFlS-h_P;B45Sr(62zw1e4iwu{$xRw435kadg47?VO`@hDT#Vd-l(5T= z!rrCSae8+59_|(txwK+yaHjs?mkkrLdujyxf_g3K9mS#^ls9W#i$n2t$+3#9IPT%$ zkoYr|pZ*pu&pn9Sw6-&&-69KxpBzBNLE~a6WVxQP?otdi7R@PS1Gut_zU%Sx@dbj4 zJ$drv=55Q#xfm_#umpuBXSG05SS8R<)h!R;}#M!g#xy{6gIUh zZSPWbbin;L!U;{f0^k@U+Ysw78N*88DzOn`hhypZZ{zGo*6sm*g4o0YYR`R&7clra zkPHev(4G+7%rRmrFdM`2`d^)?0REgf_2C}_JGAxo$D2)q+`__P$a%FES)we(0HxpG z=mJ|^)aPVpuLHz|SF=I0CI09YdNt{3MhL#&s_AeuU|~Y?!6pR~5)1oBt}Q3=*COR( zlm2p&fRgnLKnS?TpQHq$_zWD{ydgkSXKuuGZD_;7Bq+Gfg(!?>Xupq_>^t>i(~=7!cMqO5BkL3AcG>E39>3{z&E}zQq>T?oS(FvOA6KnzQ=_rU@4PQe;MA z4FiBKyL1FpFyRVy5p6*1R=V8g-@M@#cZz5BFdP52vWLA7s_ZM-3M1-k_(N7~9Ey2S zqqZ9h0dyIO|CWiEN^c1KI6H3En;ALfF4d@!e0#er!`b-jpC}1#y>ovDo@(UCzip9h zCz2w}Z!k)H?a6~FC%t8#GX3D-Ach&E!>gOgou?nG93~G02B$)aWM6(FFERCkO=lrG zr56^SbAe${O`JbB3M0U5h~3n5#W#vUl9M+kVgaGu&%V14>ny0G2ry>#anfgj!8m=E zgyKCXs3|RPLO0%)yY_m>AsNo-vS#+lp=b$Hup#hj}<;Wfe(V8o(CukXSj!4owQ z&SJCvzu2ij;2a9MQ$tl`-5}^+EOZs(zmP`k3DBI^j{Um5ZKC;tG2u6* z`eKpX><2|VS7(mevpT;K^eYqCH0tB>w24}G!%PCGI_h0Ts>z2oF0ZZ(T@xO2ezHr8 zf5)AAFHLQUZ=u`XxA1)HdNgn&u5T7mZfs#Feez#cgE0D1WafUYgSA2pyas%lA`Cn# zztGl`KqBcOeWs+wN+2?~(V|&bXhVaINfo0!H|RKJR8XZ)F#f>q1^OB%Q2V>Stq_1T zvGAg@UPhw|f3fcfI9>^J`6Or4nB;jKx4GX0BC8jIb>3=fp zZ}+pu55#>|q-=|(nK(Vi)?nwG1LqK%7#NGIi))FU535e<(0)X$)hhPoZdJoOlOH51Zh0N)h=mk$jhM7fOJXfxe=0uJURi~IZ8}-eC5wG(ixnq7;N6fCsSI#Qgg-a`_5w$ z=@R)yF8m?8rzEaEq3h0AXpHPo7WUy>XE^jYQPHV#v~0X>lS8a(1pq0Y4>8Q>^2G0| z!ukGa48m<_Ka0_wpvH+tnA_@D0c~oO6(Uhf{Zd5c;meLMY5pW5t!9KMu$FPUV zuTd^2U%bcyo{Kd7)jmBIM65Z`5}R^ujkUDhLn4-pBz#tr zzr)q8PFsK(hvWg$LGP>xX{&&v;y<&A61c03ivpyM`R@-}>VB>Zhi8EdDENlNA|v3k z4(9Wf*?sJK2ipWQRvq+id0C}uIwt@0J9!AiCK~QU9Q#!eCqW)BFWflui1%Ug#7MW> zSIpwWojd)X+x@vJA*h?6F>kk|a<@(9@xnfe$C)c?Dg3boV>9F9ji0SP##&8`k9Q*& zy#QqUPw`fLiw@042Bwy*_Z3qgMys3;q<_lo2Bb- zwpxF_nsYUMc8O8iXZL?fLdBqyiExxU5?HWoc{C z3*DHh*xXP}YF)RNxwFSu=T=^9;@v&6T2RHl&A(I*X8TsOl6{|e#RV!93amfe&hYQR z?}MCze{pYn9-hdHLfplL(N0O&l0H+p`d!oWlj~PxHXgd{d|XP1S?zp1`;b%y#Gyk0 z*(T*Q5HpFp&9}j`O#Gwoezmoncu!n7_fvs6>`)rgK|+~m>dI=$9@Lkrgsu!1=b zwVHHMDles44%K8bRha93ufE-`EFN3%FS`xQsK-0BA|pYf%$ORLQRlly8kRjz`%L9wYdnezNutUKH!Uya%V{=}wN-jnA>^_}y3e=vuSkM!mx@+yTr zFK21LakbsPtkg_6!)4TnsA%BJpEn0dkMDOeD39fa;o@4+iuE>fZ_wBRCAW5&u{)bf9I zAJmi@?Q@fbC4gOjAT8RXT4XfyL+PTPls(K-wH6}oF46$Hh<`7SG4TrgPkH%r3WVto?^;TE!%XqDxP;V`p6TJ*agw z8ssxS@*5hhj$VzoMbCPgLUL1|+cr5~UT)n!hd{q?YzGvJjLzPPy6?`Bav|{RWpAIS zZ2T0b_xj3ZKg~~CT}T!CSj?m1vqxMpEpjM8ByR3^fOH&QCC3};!y_kzYOW#6|Yc+L)bAy{}=YiRI zw`#hEYc>}wBHPEij$aV(7vD5GH1o(bZgtimC^>lS5kp+BYv<|hG&I_NWh#=`i9&yG z=+O%Qz47hvZpDsFH~*yVE2q;7n)l`zm{G-Ed;DA_l2hitNA+)vW9bdppWo{-BJmtt zkcCUp&p+Oqy94~=SO&yj9(d{Alm1b<*8jkW`%J^KQQVJz0Rj0n!R_Ns44TsE(;@R5 zaULPRcw2$Mm_R2Q4No^r z{}%LL-);2r6(6e(vt&KbEy)Wv3(|D?zJ>Nb-eP0A#okh&T`0ET(h7e-M#)vcM>P4B zc}%kpL2QP*a@^?9=96o<5AvP1H9O+or$Ko_)89vz@lAkLzS(3&sx?m_-RaFj{O4rf z>L$a1l2^H?*GShWOrp>CJB{2`O-_RFfM8?HeQSNfc6IH?yIFM<1!RLy=|r{{iQcdA z*W6PpzxcP@wczYl&vP!E{DHe-N4{?z^trK44}>i!xsjrU5CwVpw|3p1R{we8^odzs z%9#*Dlj;Z&wxAj_>tssy8#ZN?x3`!c?~Q6r8DXF9&$|#nuLM3Q?){7<@7bpHJEi!>{HwF#pQR0A$Ee2jOIlpx-g@Yr={VHTG~KSY z1k+w5qxSx~9<$$>`=09?s(2NOhBk-xr+9C5O>sLS;_>~3Nydq(4by3q?IQX5-&V90 zlY|;>F8|k%MkDSVa2(=+e^Ws1KiwzAv*lxh;Wt=2K9v0{-fE>T$QIr`GUPcM=o`lhz#q zs!@mIub${Lk^6H)qLxQ`4NsBP8UfhQLTjA!BHvF7lo*{cukOuxt;xd}E*Dz$Y~Kf` zlr64up}+V3cbZ6h7Pms*c?Y_N!{YL-cCwuw**tr^S9h15AvU?(*C)fE*QQ7A3%+YVbI*6s~D)f2lld2ZZ^-f{8RbA`TFC+BbKaaZ1vOr|`me5N$=x4uJ@ z(GR306bYC((Dp9b@DImNY~~0{beOSVDvjWHX%nR`Gt_i*yHEHZ?@5<~6R8TzUBRbZ zN=4etAR53r`akWW(1ii#p=>zs$X1v!vtFDoAT<8X>DTJAje7q^&p+0m9xq|3So1#+ zrpK1sHk=#Vcy9Zh#BpSz%*``nL~_^wIsTnnwm!aw!zF--F1o$l9Y!?_9u+ zPQF9nad9q5X*YVX(RQT4s2~{v&oli(8z| zZ)k8V$~S$N>^W9u-LQBt5Vr(PVOQbVAhgq^bw4;L%XigJF0l1kyo?oJ-ldVHbx$c| znLUuU^?3K()gMBvs%f|Xl@)~aQlSPTZF9sYK%C``r#Wv)>Ui`#80d;)=?l0Pw~$fO zSIx{1{2O90J>H)2-6nS+przBkv3vUM{#j==*6xGXqy~PqR%oWV&P+bqjYsQq*pok0 zf0HRoI(@dRqkZ6??tr+ZZp36v`aq17dF+6+lu$>1@uu-dmcHr_cqxJ92Zg-abe&_> zEZR$(-MB<4Cqjj0ENMm`Q@d1kNT@h>c;^>xiI7^;_W9$C%jK$GJNMpH?x@*fpE3Ef z8jMhxh%~!}N#GJn??-&vH0Xweq6Eh15Rini)WvHv_o>S#3{^Fd@Bg=m+V=fOd-?z%N835^}l-SgY^{ z51z#)0SlR#9YH-##CO!=Xiw<{88$W25e*k6X#|GsgIdM{;B)F<>whO00M?QQb2L1i z29taRotp4q4ghCKE&NFW>cY#M0wqRD$_{PHv%~c}|f~_A?a}R{$ z0USkwrH!gp74^3pJ1Yz4tXI5F@#Fbun-N6Z~>5s zU!aqM*aE<+l5Xa^*dsNEOH^PMAZ>bzg37o|77-|#z`lR!V zbk3lnA|xP~Jn#8FW_ZNlN-@RZAw&qLB7GrbI??HKo`3g-glFnnkF5)W8u>#V4vPDO z*GV+ddiF=h?SNEjX`yN6zx8K@-|X5vboWF3!MD!5Z+6qn1TQV}3##{Zc|{I8Neq5Z z-A&dx4v8tm2?5~wi|6}y6Z&;{z)p;?6%V)r;Ja50<)}NgO}Y$Ao{*^IF=28f?+fDm zA$kxiAMTq+=}IUgto>6F=3w=!VJHPjxdqDjmoRm#qh8_}z&t?~<7*H<6IO=$co5zW z!jXe5LtMq%s(>z?!=-Rza?DA)V}lS%=s4FNYA|Q@@LA-zd&5^k4qGATH(`>|@wP!Z zj0LSpD5$w1$dgt_7^WMcg%aV8TbW!LH8^<##8JdT_@0S|-3Ts&^u$1FP*zp#haO*s zRxis24ssL;oF(WY2R(3`Y;dfp@wcaV)wOoMQH_F2z@+q{tIS`GCro});&%z#rf@f_ z>r?&fu}QNzH{th&nnM5LoQJx0pFW`)R`5Xk*pp&uzpHzMD2K6B=`k_ICfEYfrcZi5J?5FsZJMv1^>ffEcsCEUWXQy6DrzCgDc zoDUi=Rb#6Wc|MS$5iK4dA&IquoQnYsIf)R;+aZMKTKLV zV3dL4YzGGrQaZR*LXi+JFzF8iSp~wI<+u$Sp^wpUZvsIV=>@MzGB(bExQuI~^8^M< zT#FoTLA*jRbtJS54Z?JbK#5jZAHl(#vwcN7NrBkL_VPR5tbU}XO(=Fx< zBR(;dlV1m=#xLeN(!7*zvRz&*xWFaZ*>R4;PWSSv^^bA66|t2`v&!H}?@jm7c?;r( zX#1q^bZUxNpi!8*^}Oz|Ik0EXEtqK06ir;1k+MEAShl2>jI_hyvB>EvpuT;Zul5bZ z`@F=arsb50L4z6G1UO613}jc~WW6L|({VHdVcEdA&w*wohaiDRZnTm4pKLz>8Jt)~ zppBy~gsfq-?~@a)$e&9%vH|`!7{4m##(TlGZX%>UQ6EWvH&{G!atE0WNF2Baj2k3G zLP7IIDuAMn{(xU-G$cK7g$sXE5YWis8(*P(6FTz$o&^9sBHOkr4s(azbkcGHn+i9a z%Ajm~p|z9fNCo=rBiKtToX>=V@F+7;G$-XQ*(((mPVm~Zipq>O-Q4xUSHa<*s(9w* zCz3X+QmoFZAD4z`=iF$leKw`7x~Fu~aY_FA%ke{0#)r0ReviRV>XPtBI8_BUG(TdY z0Jn+6cQcU}%NbotFG%>wbDQL03i8AHMfBT(;XVoWi=2wp<+Cb{6H`nOwSL|XM7-3% zDkh?6grMOW_~uX&6CRKp$Oit`ZsNBx4uHV%aKr#Z&KQAPOllwxXL6A9zJ_H!balm( zw}p>~zJpD-18gJmVhuRJ!7mBx5S?Cv(m*JA5F1;!O?K%6 zd_S1mk2t4hWyuZg`ISHiwGiNmTLdWY9( zk^5uhvJ9N$gVW2f$+^&EN&Ghb(YC_aZq}muaYHzDE~@#UP_O@_wPb8%nN5z>#SfOr zg_?e=G=7rIJ}mXtUzs|hY=vT$=~Poorpu}qsUL|9e1B(<-d)QhRy63dVfH%IMq>H; znQPmCB~OmWp(5>~=+A@qY8)!tl|yTg$xegTe}&$79JvNl`daYVz(#0sB4Xvh0L;6| z;H*h&C6V|+@`go4RYB$;Hu-&u!M{Kq19rgu0K3OV1o(>r5mJZVfJH?Vk%B=J&?*q& zWp94;m6lf;w^4YW&$Tgx0i2o;$HZ2N7UupBx7IWtP6q$$jTh;jlQGt0x?#LbQB%)a=mO0($tl^gq{s85OQ*PbJQX?2*Hy zzX6gzX?KRi#K6FC8_^TTd_=17fRTiadebvFAc#%i?$+Jt1yg{B00T#Y3&>$|?h;ZJ zI-JO&i;PrqcXy8y8@VFAM4EYFY=Zed5XToGGdTVG@en>G;@ZQxSy)NWu&%V;TzrVb z2d)@e;AXfA8q{`d-+t359ke6ya$*r$wWP6ALB>Ih(}4YhcwLdgNpi%NAa4idya`zo zAE){NN!9I7f|8|LnmT z5AYXs<0@E?Se6y!v@OJ)N}RKYPFS?~Ar&c~JzFz-VisFG3E+ktIswND`Y4D;fS^rs zBpwPIPbgnFYmgX!FQju2mjc2t#3!^k-h{lUQ;)0Jx!hjDo+Vxwo~G0QACQGu$~Xcg z0^7|I0m*x=dy|CoKP8+6MqE0;Rq!~X1NsWi_ai6n;2xa+LKWP|`Gc&DKqpI}l$A&XpW!y43hABG_KUz1@6#`I_`-k?6g8*$iO@sAq z%XbO1KYX*ga*x<;VN9W0(Dw`EdAojURj18Zf1~H7{ttzV?+2YEK)=JRvL8>1I^#-* zISgJGGtH>c=pzBuFK*^3S|A@hdUS`sCDJU;v~LAH!pJKS~iOdDBo-BEEhh)!!2KH7)NQIJv)NkvM! zOS%5wkzl5UVrQ9-)9yLo2coHM^!Yu3#9=RGbF9`5@aJFe@q zM-sJ4MrC@Tix1WiECj%V$mik0gpLE;3_yBA;sm&J`<{h*dwC(fm3QRCM|_5b4$~HJ zD?#l6#Fc>k0vQfS(xc%<`3jF3d?J3da-hZh2AhTJ-7qiQ`WVb=r~>WDVY%p-F{$-er5atQb!XLnu^u}*tKBi zBZ1z?Dn%y)Tc)OA*&uCjz>ZM3pIUnX>gF>rFv#4w!Umo`O3DP0J&Vx=W;p_6Z?Qf50aw1Bvl1j>N=mS+ zz6J+NSXgj^!V8jas;VkqCxQ>i1_W4y0Z2!3bSem>pKfk#y@b985^^JmFz^x8o^C5Z z^S&LfFwkT3CONNC($U+N{69Zr|z=-Y9U`GJqiEL+4yFM7%B#tpYhSG%=A1)PXql z5E3BjTHyVlD~TPY+L1$RgsxEp-3k&iM6yL6D#sFxM=90?vN1$Hj)X}71Vio}L`Vq? zH86Z8i=GLA#!&oh_ZFZ8iHN-6AOOi!2CzclS}QQ05JS}Mu)>k>6;epJ{AaT*FdJ(g zYN$cfzunmX;30Z+^q(5yuOG#x)0gu(qqbX(tnm+hBs?!GXHgtp9rv4YyV>VL>lKD! zZE-$$`h@&o^cAqSLLn$X@Cxg7C^wL|AaoEgo*>OS;AFuweaoi`03L8Xw!lrNRcVtM zLE68v2bLxmE(hSnA;C2;h2mfvAxKHc3Wt8Y4ki8#sSQ#HfV(yY;z78|*G56{0cH?m z$a#@QJ4A3uhzLf>CghZWN(x*?&+J>k4UI4r=@p|S;2)P5IvSKb$$;|(jAXEP(;-lR z4r(rLCB(s?znB9ZaVj8Lk*Epr+wzY)c*1u^GA_8@03(O=y^(l#^&c0!Eq@SIz%35_ z057Q6AhZ{t`M}LQ1>$4_h!74BeIvpeYaZK{kvoGTzK3C+v&#I+?Vnzs1))Iob610OT6^bLs5e3Vv0<7_n0T_eG#06Fy@O9&$>Ih_Mus|4r zWfJk?f<8O9%mM=qI?XkgoHYK$wi!dA{)o7G9>*73R#FS0!|pHyW|R5fN*h}NOm@+q~$H& z#BI($AuewU+=j4-o=NH#PSkun7QG;ELhTLwX%M$bfG!tq33&R`7nCfJZi0faWStFi zCJ>ok0>0p9Xp&D^1cP!FzV{_$;lUYT2yM|zNL3TqSRiGF;}}$xaDjv2?&te55C;QH z21+X4Ae|zV{uN>spP>TI1Bm^BjRf6hXla9#1PMn52P0uuBM@3uINc${LHr2%oFJSA ze8PW#Y@cZ5Ko*D)97^zU@bFCG$0IHl2$2B=g$Uq4N*3FVSO$Q_0pcsj6@G9HfkFVT zIrx3xlYjj6ik6d8`OQ1zHwIoUSZv`mQd6fB5fM>J%DFH^4u^8$T`1zIxw%!Uez7h> zZVeFjE3)3N^f2{eQuaz%n{kgNjKfr$yQdLD3@L$C}^LI`l+#(@P6 zp(p6EVW;HoX}}8s&mlxSh`=7HS%Ig!Bo+rcw4l(0u(ug>))$nF-_J78uU^%+@8w>4 zeI4A4;2VIX9}s#VbD~2Y!)Gf2a(IOJq@-;i`GAAzI^;cIHivLs7SvEr$8MFvM}rPA z>;b4zKw<~Z}!(gOKDEDyx{xwQo#F-XN~P=pY1!_V9KX{qF2g4h$XVhcf32;`M5lxrjo z*Z&yNE8m^1>ZW{Wwu|gi=nS;jeT0#4@LHm#D9L^lO)G>JjDZh9p0U0x{H9O~afCs1 z$fP`h^B<$ER=GtIA1;#6L7(N#>lhFdJTphT`=QhBjmc4LD|O}Nht1upH? zxLuEJz_ozTR-zYy65i3#FE#=RD->!F_ZR3OMrZDcLmBz)cr{=MWC0EXd^RYG0ci%* zpYW9NiHXzyE*We0sFosPH`p&=5(O{{h|bB^CC@~SRkgIVYOhhmQ_#j=V=s5V1>5a6 zMKU2V{HE|0K!ZP5li3HfLy(HWO*iM_zT^Bg%cGl)$GDSh;O^&{P==LXsV+b7GPFWd z3#zL~4B)s->kj^A;6mMka+uSg?UB2OOBL~Pma-9CI1lcMxs+!yg46}%>qSm;9YlZM zmpO01AG72`cB@9#r6IU{3I!Y2jlcGwTgVKdb<9710dC(ofKWJ1)?Zc!_x}l%n&5M0i=g4Gbg9YtV;Jz z$gHz2tgq^0mg5G64*9hV?L|53<2BDAYsoe%c~-+e0sM+gSOyz^>l7l4_aKp7c7{AC z(!eX3(M(6@+cAjdQFGSk!mPv!wF2ulLVuwKeYybJk2P59=<`*l_Dp`sKtIc_|I@&F zL+e_NXiK^NWdnYA?@arRG8+mobAiFk$t_RNOK_mR$!1mL$wzB$R3$NY` z{uh5HLMZ(d$VWI2EAq0kVjwZFTk4<7L&a0Lr;Q4^pH~kToA%b7#)9-*6Fx&udV2af zWQc1WZ15v=VYhLFD;yNTdb`ig-s5bWL<_HL`X|=kDGLYlN(Sw?5TU&j9<#WzI?X}K z+N8?as*}5*#Y2XiILx=^=Vd^W*Rj z+mnTN?t>Mm=V}qj7Byuo8KRb>sOrGfa=`1yL*Si~UNskOWA};*D@o`pgC1Nuo#+F!-UkQym8Mo^W*&fI zbO)F4S>I>L#0r3O{6O&#i-fY6H zvS*hR41(PNjs;?XJG|quV7cz?%~w84cMriEI1ye;we&xCwn1@t_Vass%h5iCW<_88FU*~rqZm0Vx^J0GBtv@=&$FOT}x3KAh8C6M zZ?6Chj;F{Fl}+~kyEm>ui8}@C;*J9(8qgPpXv4@T6~H;Isz-rezOe0Dl7FSDG8NF_ z-gqn2JP`U>(KVS5@8_el+*wi}GvuOb1i+pPwmM`o0f!nMr+W|>;2}%~<4Ue_3%5B` zwShV!!V|T;cU&dUO-P7*G7DL3Ydc+o^*n{@bLIP$e_6i#+B|T3lYGh{} zSB+rLcxc`&DPWK1?mT(6LEk`yY2U=e=G$9Qv^<$V??Ua;}ARi{(lE&Q|ErVp+BJ6*dyHJvVx ze@<_SqCVABv$t9erR*(!i@M(;qUGIFB5%Mt{omplXkJj*+D`=&qPi!guVHfDi5^I~ zLHFS2hg0|)bh*;8<{!BWhf8k>C~fkkSD2eQZ|@@C`D)T7<-gC{3y-QeifvH$s>u^fs z&5g0ik|*k~pO=*T&LBV0E6YPwBkG{jSnO;G%^W0847VeWo?qD}v6~LP3E%bnX%;rv z9&vRnK3t-_r+_hbp|#2F7bVR+xYR`v|IYnK5EW*ldvhA2;)qk={ZG>lsKRGI@^z&y zrWax3N9Jtqjk9!(JAVCjH)~TlH-tuTpW$c5Js4heY6$u(r^@gJV#>zEPwiuGo^De{ zBys=&JD-^SM`!Y0xV6KRAAV}g zk9_uLfj|x;q-EEBITg?1QaD4yQI;>2K+i>bo#t%E^d|!VzNk*`!Fz35Huzc8bQrVS zwWuAm$m#yes!Q~24~n=)&`%Qt2s^~J_wL<$FcKdeTo3gEh)9Ru8XIit!jBdIr^8)r zuWPhqKIjMvwP8&T_W!I3Orl^TZ^t?vgYoswfLEH)t#=|?Ug5)=$9g)95Y60UbH3{+ z_Dn^4*G(Dr@zlt?NNzfB=4w?VqP^zRl^w;M|Dh8*Yr1Ao6i9rVVA?}C2FLqr{!q*S zH}#)VfQGSlLV$EdE(FrpVLo7(Jj+FzTNg}M(|SU(3-xT!<&@QO zva?6xXh-<}nJE3PlMNP^r(vkb4Xe_>4GZA#`P;BkJ)A_amh~{PgCK8Y^+buyeW5Cc z@!f*#lh8yW={GkhTB~ zKo-gtsN#v-yt-O|5t{EDhF;mh1=mvNT3m)A7YLG0X}G5?tp_)P7WEMfS4MQIUms1Mj)}!D+O~8 zpn(gZG6;(fW@$j+AS`4q7ov<{+zu05DbK|L@D7zOj0aQsm{}KsuGZEJ+0%D)a%c$3 zOI;m;Tnx`C@e_7HQq0ut1>Ym--Mjte(eAOZyPbK-Ge^jD zk3bxQqc+xUR?-iXMTpsTWC1UIFz*6|IEa*Bo=j2S;E+Y@77}5D5UT1}j8F}VJ&@3W zfwG#PNa+6)ilbKTSIC0hkIV<7j?c7PY;xp-9;I>JL7iD4ii9_V?4T^NyQZ(^9itukdx&+3IIJ%Xe9SHRMdTYe{fC5f<=`RmTrd^s{D#H^P%l0{H}j&z3lOo|)AFZ=s*+5 z(`di&kii~9hQxrG4*&M;m<7@Itzll<#`<-sGtr2wLid7-IabS03A@M z&~*NuE-0w9n!|=l0Skfg573W~RYig+9-xXf{HPg`F-wy(m#>ah`P(K7St8Fkj>Y8y zr=GY`z?cGPoJ^=o^%)dyLdXr?_+hlY8h|>91JuhqQa1RkN~fsN@5{cKaav?GXKWI=;(7-d< z{K1JWt1{TjX^b!O%Lf`O972Z1S5Udl>nc%o3(PqCI&*NKJLb5(R($lJ_UycSF8|ck zR_Mi7*;51nL?)-9bv|MXkRS2~&oySF=jXPLfFq#;FSl%b8nj{QpzcCkEC`Jcm~Bwyt_LUw z8Sg86WN;Ux8i?v_xlO{%-p`6bhrO;rm#6xYZXNHVnsbVPa22Ef_!hcOf)4=bC+N3PhD`~65|K-6?}z7D~N&rPS1X^W$^7R;M)5t=988NNbSN2rlkVBW?uj9jyp^8NyF!+9GAMl@*o{LwI>_ z)QHGK8i$)KyUymg&tk(fG-rxv1Yz!{@t>paKpe>UU6MFHp&-eFu=Jtka#K{;AuD^vBE!Do20*s z9(UufI6*rQegfw~$c#AnclJzK9ecbiy=-E>3L1wwO0EVpC{MVw$y7KReMqQhm_tTkb8Z6H0F(b0jSW;R)YwZ9m*&fWY{r z)xoeDGqLa1#FIcKZX^17pQ&IwvdZp{e!2Df+vBPTdFx7+uwd!hpT}aTC7QA2NR#@r zIj%b!-m_6oEaSq~oC3v?R-7j_KAy7Q#Jho`k%Nn8BUoRi+pR|&+dpkKY%3>N&770x+lQkpFwir*YATlD*Nf375-qQ7WFi~N zQtHF&GQ2?5|CE-6c_Kkkf43vWCRf!D;^N5->)1jEZ})&F>dl5R;BH1dUWgMKh-NVB z0ujz31Tv_#UA6$tAmThn`aTesYL{D3gMViZ2jUJ9J%TkmLTSkm z1j7eWf;_~4(6;@h#p@9`_P!N4c?j1T@BzqgBLun)``sE2sBr^+iVb6wO&YyQ;pKo_ zG+}mQUyM_-X8`Ir%1~%XPHW!MO!u3#l?7W*#7fZgt-}nqR*~G-8~gU)1V^4e63al% zcYoZa7tDJ9$G5gzBS={_)&ug`@6c8JdUy^UcR(e>osEDs8T}eTG?A%WBSfz{wc!SZ z7X&F9Sch`wa$ZMq{7*UexU+DSiRsjV9$XX@8NIGtA`@9OCMi=CiyBMmvYThI1*p#I zF=kh^qysC)L6L*;GUNYuU6&e;+VR*OC|iP@879tj(mZ7Vyf4CigjQYhAjVhJsg^wUZ5obMi-3j&|^TR!9vNiJRRoa^ za~=u}nzcY8i?G|kfYSgCco-zq-VW~;L4EgqMb=KB`9l zjOj%+Lj9gzCS70Wv{x!>O3LS2jr&}?9@_R;?;#iZ_^+<8cmZSr!Nz0vHsHttEdyYT zMh}5<3h|@xLKx8iWuR#b-hxB*%hx_)$~X0Xi-wVVKA-vG%76O?TSwLSEM8FWCuY3) z7w&hU5F+pyxR^jXw0~sF(CQ`-*CrhMWJ~`GLG>v0e*AkujVSmlxBW&GEaVKLc<2bh zKCuF5AT*wj$S*+=G#QruW|P2zfC&P+`XFzEa{eYX1z_?X z=sA;N?I40zXd*%@cdMdPv4jd!IuhGxgiiN`>$f+rHELH!KE(W@M!heSS4WS$TUvL$ z%2XnIFlkPU^T;Er;2B(gdEeIy&5#$ds4lal!4Xr4r_tPN!*M-jGTwLY*t}p>ZWGJn zB>qZ*gjx+2nu5e9`v(5D6YqnofFdq7#e;tJ9B2k;+1MT{cw{2!k`ef+5tjn=j$W3H z)ZkG=~4)&s~nT4f_%_EkNLgObY?E<19!`kq#0_ zspjOoz+mdK0uSljH%rPYB95d^P|+YFj%nNh8x-$n3fdxWm&OY1SJQ&zfSt3VKy zIr|;*!{q_i@Dk_x2fwKbNEg3+Z}>HPRTC|ABH>BbHcDDu9ZsP~VCKjKr5SVt7C?IX z42K&Ux4;b_FzYfanZKhdZ`=DluIlelf^E}j@tSvcoD02o`){@kO2Mp-1 z*=4(7{J%S_iL$u;8~=l=K5IgX0kkH9q;=<45oz$EZmb!d2iJM*z3pu5)Nh{Mh7Bh$1BvQ4<;|V%Patw z8Ua`WfXsgHh)}JFH5BlipcMMbSO#*Y`n#?q*g`N{mbKHKS5R6K7|w9m0kGqIX+z_w z`jgZ)ms*Z+W@>EDJ2FJ&@5AArgWL!(;QygI1M~y;Ht!-rb@m#$-p@f`B<%~?EEk;3 z-yV9fic71@wOeklr-zbPeQghjx6OPZw5vyMt%xrDF}C$(w?1Zo$9rq4@3VKi)sAEy zdaMTh_gMBGjH7RRUqY_1@b_=)D;2SCTQAJ;_4&qy*>0$zTM@k6$+p;G{NcW#K_Xv6 z-K!M}jAHOgh#{5}ke>P^Gm4z779%e6(DqciE|^U71lUj7;Aa9T<|HJT{ej3ZiDrWa znBWGS51_X`)YsRKKd69g|6j=)5*RGv{`Gq+i2Ok+Dgn8_|HF!K00*}lRi<#)B!a-J z1t`uSr28+$S==4byP;l^v9)8LECA&@D$nT$ zR3#9i0!%k?LpqX;YZtc-6z-%xW}xw9bOBe;f?3SJ*J&_Acc{Q!P>{Z9F0LS%(o6G$ zjH#qWW?kGxwbc(|>5Yo0#_w}7uT)D&XR7{CZR*Mgf~7H3qC3;5w; z$xOwLmsLL9*Tpd2s4{IOsZvEyg5b$O2w@QZ!Ms37gP(cKAlC(qt^g5I9}JlS`Qn@_ zCVXp)gZY2XT;8T6=Z}74PboU(5L2IfS7|CqJ}ppSMt*c4bl}J6c7|hS$ZNhfgte|H zm%aU0H{z>cRsYpozlrnv7!F0u4Y#D^xhTlS^l00$Gj0`;7B7=Rr(^5cg4xxh@dxc( zL+Fui9?fG^tQf~R9=`JEVuC(ZL@@Ss5Am^pmK#EdD3D8mJ`^uEtqr972)1SsZedU( zjemliOX8_|pl&b3_J)7h?{-uL4g4Im33{BP;ze}Y4;_M_nv)wrS&I|`=VRUJ{8ac( zp|>%;(tUYvqF??xE)0lE8~mG>aXh|%pt57?ciu?ked>f4*GEn3wfnZh-p&2(Od&74Xsyt5RuRTY5dwS_ccOge+&aX}}Yeh`zpQ^uXn!jcrkp5W2{Oi9k z<^ycXvTeZlIWn45<`&L(@YC?di(EE6iSX_JvsmRZ39&BO@EQrEYn_-q9L7N4mMRdPMdmr1^p|({?T)b z8BCj~YrTIuHEdzE(9{gsNXu%mJ|L!~`|itOsGBdl-o-s5!Gu|dso>POcB{|wqpR}6 zVOMG|2Z_rW?;mnGY~7Tf-7zwV?QkfUl|1iKBrrnWE+ZAqct_h@tDq~3A7!OF!}nKt zKUmuGZOSbPiERseZ!Z?!KD|=^3a#P{=i&i7Q!j{F-%wtO7I7Ko#^=yfrT;FNF7X<_ z2#47INH8;oC2j2M8?u?U%C9*!Og7V70bQD+AuA7&2^#%I3e!UuvFJ*K~Uh?6$ zFLVuCD)DQU*FBLyFoSrZK=5INlT^gRLDrA1Un_M+j*;vt;%LwdT{I zOchLO6^TJ2Q*-H^9ZQz9os-SSC(N^ZR^5l`>P#o}tnTi3D;N*vZuG6b+1!q_)5D}b z|CG*>C-al%wI-wVj>G2bPWjm_tFK2T+FlpS$zN4MtvYJU-KhzD67>-%{4<6i@FUimaul13O<>+ z@ov^F@=BMWrMRr^x1U7>(wd9p(>w(+N&`M#;Yn(c*=#(~w+f%T59<#tCQra_jiSbM zg8{a`UTJ1PP^@)JuRz~@%{bIrF zuu{&7l_lh2MM=s_I^;x~mwua)kiD7`gRWenb(?5b^Y%}f`uV38PNKZ$MCSG?{VV=k9sI?;u>CQ&{@A3ITk!{e^bZW~9E;u%(o9iiKM0t}-9Eq3tl&Jn zqG0#Ue4?=bl~n+tlrQdIof3cDNo6ZzrY)37zu{yTit zjJ5xwvhz?Q{JVMw$C{AZ%Z0TP(`0k0PZi4LFNUCTOZ>nKxY-`k75A(MUI ztJqh%%qJjlN23NOP4DA?xQ7e{r);DoEaS*VUF)2|t~0_-%b7un-jIpG#}Vo#mR4nO zda+6|`Q9IiDxi)UBWXN5EW!T665Gqgy5|+|lU7qta7A=rIMlFTjsSk-ufM2XfwsA+ zE|Of9rvmnmIJ7nOzj%tOzFde@PQ&4)NGMlL+uetk;m$NE^$Pb22}MJ9b6Z%TdfQqw zmYIwnVQ73H92A%3B?E>!%I`A_xrzm}uX%n~rRPZh!KjupGI`3UHF|wJ%tJ%`qo$Z# zAZ%~!rO)?UoqB~N-1PWsmz2G$b@N{H;|MT?-I&+X;>SHdx~Y49b@|3+Q-0*jy{@3^ zRNZOqqmyZ0nd=B(|GTx*HEE}ldV6UNllmcj2I0e>+5p`kch{@#Y@?scd`hD&1Lkul@Fr(W3=Br(3Ab${jl<=KR)|@~wiF{mF=|+- zz3?;V+$7JLp7$0VFJ2cjCz4I^L+_^&Okb^vK+pI7do~q~(Ptp!KolHp2p>V}AX5E? zuFcgK4N7Bglxgx!TY3cg-r?Uw^RH~oz18=gIP5*6Ej^sgH+f&&ylMKfZ@TH9O*6?m zW>tYmnHx%hLnnAGiz~A@6W8oHhE8s23p}N-p@3`hr$IMgORivZV6pvSjxm*O$E-r^ zjc^n1nu&(_pu|V!4z?oY4k1k&$M6{pDphoD1f^_jT-&lN8zk=xokBk%(iz9Wsq!$@ zU97;^*1Ve1MNBM(DI?!7x2fgSI~)|5{dvN9Ff7{e5+BdoyPtjs*?zZKRtOLu0AvRh zbq5!BXYj=im%{cfe&teggzFxUHP=LcxtcIo{CZXcW5LhHK)L;4o|0q98ftwjYh2`Y zC|0VBe&*wWOAnOhw?;J5jdYb-3wG1Arw*;O{-9%P`0QI#YjU+R!bAQn)o4gou!$Ly zcUWque(I`2Cx~GoOd8mQ{wC)PHPU5aba_-D%-Hm+oCic1++=A~J#S}rY%~5@E%WJ> zUQd>EME&7_E3@Ed!|_WCha0@-Xz?reI^Vz!B^pf-+#mSnDRAeD%Sa)%x69aX6JiU{ zt@^IUzfE8}J+0bYzG|@-mbMFL1Eo~TEz;UuQuZg0Ol&fre8hd%$`hT9`fz`I+_9pU z7>_^j^yH1U@91@Je41NNvDcfQN0pw52=|UndBXBMQl!vP%pBEOx&2W0Q}{+>$yuMv z?W??@7fS+nM?~Djo5Iw4-Q(qDisyfFr_MAh?qsfH;+8Rg$IU< zJSUgvQ$FSoUwg``^dw&}LiRPj>+kVTeI@P*)>ar3G}?Bzj4JM7!#=Tuv(J8{w|I6^ zy@fAdHniTOJk?Ip?SOqh`TCWKy=rCnk@*k{TE0X6+t1gouq!w< zG>g}FlYG;8`Y5!9<7+l;*!Sx`IoiLu!<}D9VN%CyR7)G49_#bPRd$=QU2)8GIp>Xf zmq>Lg0(^j(@$gSh>o&_%>g3;MkP$sf@`N zEb5*7Ns9T1xGna^xiyi>K2qVao4j=D|h1vR2qz@X?Z)h6Y-I7XUAbV z?vv`N&^s&(2a23^yk6c9CZP?T6XTZck5o?W;qH4_sp93;+JA81sdc}3c3+(_dXUGI zp*8Hr*3AMGztYjD~bxkI{`K$Y+#(>s}?I1m|pCB)`@e&21#^(*>G-uBDimvr%% zza6)8Jx5zbk?{q2WQ|S!<)|N0H3>{BK0I_7$k$T>DGAaOhjIhLgb4oEUOe;`>GOf% zHXbZR=PSKpF?+G+uxs|-p6T>~;dP2(T@{_&}HKXvAOLJs0+=udND@jYS{Zh;fO_SIe4=uLV`(QSf^cQcxpLOVMLGxG1_DzLAOK?geRtM-ng{m2W04fkhTS8AM zKJ_pM^h`);5Shn3d~zUY+OLKxJ(kcT4SA*{u-Hk0!UgzZsT|i(ebRUzv(=0 zg&h6AKJNIPs?wlV0rnCTM5&a!kkFb)S6>Q@X>5m=m;NlG(`&YxxA#N69Sa911(553 z85Eu10E03h_@I42(lN87W)H)X5I-0=sM_O%`Jn`s0umn>t4#J{aH!Dm8q9j+H?KXS zM{G>4$Gb^TZvepnOpkzB_w(TVhdLrG$S!aQhU_|zyyXLnl=N2`X>uiF1yDFKrfqI- zTZx3PF{U97d30>T`gW$1UX1JT%Z`i)tBw_id2DLo%<$>{G}+d7@T3XbeS9?Osp1FS zBJeqHrB0NEp()@}REgcw`#16P?^$qx6h}%?z2eIkgB3vefzo^PE5+jp4tS&>oGJvf zKI`5pF$swb&=?Uj156YT%%DtO5dwu(3VcQM^05*NRDdTZ^`T7@YAb4_US>YgV#Ez# z?*#|ukqY|_3aBR#GKV>0m$RTJ{lbDXK5SEqXTmn`$>(Y&J&nv2A+YYi=vaDx*Y`w= z*gfVS-zEHuoZ~+xl>g(r+AjyQWuT_*0G6xJy$W@C#PAAqiLa}sM}HDu$IL|1N=Agr zdaQ22e?^T;uMV9>8%~^A#;0A&=SqDl_)MMco7w%=Rji^bf3j3AH|;A;?h3uyB~yEg z{-h^xN?TV$E?8Px`WJ|Ap?0eTy*LM$vho_Hkt1XKD)V-re8>X~BbWdJ{NObG29KN< zRS~ep#I@+*ql0q_Uez|#E<;%~*<0P`sX_jObPp2~6Ul!Ce)9HC3ZsF6!b9hK%auLQ zT*t)3tRE6QaV@UgsgG3iR)l~qp9Z+h z@=E%b$`6=)t4%1Eg37&;nr+m6#eCjtQJEr<2lL+-=*2vRLY5Jov!S6ONO!ISLZ^*) zP+H}`PsY`_CVbX;Pj!vF3`GPJM7{^2hS9WJTcdZkrY>O!J5hoznzH4d@d!twZf9)<5FDq z(_wMj5JT;d_nuWG`Y#y-xGABU@VHh{#fr76T{~X`!Z=^F%g|{s>!kmmd_(kY?Ta`8k480pvQoRV84JSXx^* zb$4F})+RK@nvmI4;0F%9kH+97OL-7E6QD=g)!lYg%$%%^=ct-f&{!fvzPPdZ?*4SU z7<$r}Vw)bdr3CF2H%f>S&>%M?zS(+$gLjL})Yz<*S+Ht8>OMsvhqv@t{m_+XsH<}^ z9&e`E!vz(4oSWgLT_(u6ZN2Zac`^}6HvF$Phr1-y@Tb@Gk9k)Yb=s^obLAomQsa3o z6L|KU`}^}ypf>>O3!ph}*xTD9_=}Hd=oDQZ7It>&a4HZoD%Wqxz>|qWOTLv8plus+ zPjh1n((FGjEgWa2{JO$sMM5Oy%WG0;-O4SW9QY*Z0PX0;_L zv5nX7H;GG{eKrK;L!HjEMi;RVuTkmJ>5mnH?7-2<8jQ5p8kzVle-r~>6PN$E60z@5 zZTu_tF?~Z#q9Ky(XV|#U|7*=w!gpbb*~-1*So$zNfXvgk3P-rkqb^-CPEy$(f@!+| z0w`EaYN(0ai@duq9jBFU^IeJzMP8ZHPku#)_+O~udPP#N9p)?cJ-=HQc}4#RdBs52 zDu6t0Tz|RyhUnFc8rfy`=ECTy)kj)KH^N@y=DJ=Yj&Al6(UkP(B=@Enl3sTt+gPiLmDjW}{U0i5N`zn>KQ(mNBaL zum4%ZTCYgmn3Oob4X?F>fb}-c{tJ_Vc>Lo!wV2Ys{*&{ov!werVMR(`#zoPgpmp0^ z;_T){l~s-SP3cy%&+k=1${zl;Y~_5#+CRCJ(S$KXQc4Ze@9|ylJabJbzwF=61$Dlk zsJ?I-=7x@il_!?F&u9%}G^xJJ=6x&4Q5mc!M|XEO*R!0Sy0&H_Ii%SzJ5S1XQRvF- zH2598)#_-nhBeh>a`{L0Q$kgG3&QGGW%%V96{bfSJsL#y`X%FownLuh!;s| zI+0f8GQb^d)@+rAGGZIUpsvz?Nz%51Yom?k*x9b{3;EYa6@0@|F0*FKz!yQYC+vT} zYp~kih!sq48pA0#W&6iNbUVP~MxCb;bw!YfuwnBiKyaTEJG21`kAs$bL*vSkrI zX}(kF@lSaFR|3w+>IkRidk*At(1bT@zjdhu{AaW6B(DC6g|$kG@_|P+YUF6`7`7 z!ywR^Q^;^p)J;Y6f4p!a&av5j$sP1eejS}@fH7k@otz1;q78Jh7jhdrpfGm)XyQgE8&Ger;lZR!#W~$3a8+OR$ zeJea){${kA81**eylqy?hOApzv@|N#magyN3qpZaw4c>h$CC z;tzam^~(>;P9fFAKY(|nIPMhjn8BQ<)|O5;Gg#a;)UfipffW3vf11Sw_PeSU!-wT= z8pG%DI6*&Rcqi0!u3&#upna(~yepIk8Z95`h@a$qK#yBRjlE=7GsDT#<*pA=Tyj_- zk@8(_PF^}KTA>kNFK_E>F<#ns*-~3prlW7|G54esU6m`0nDC6O>$(jYnp!HsH6bx= zYd^M(_dIY)|6z;cceNK(z3qiDBFuM?Cs8H%a{)(+U-pX}S>rt3IjZO!NA9=r?vcEM<|`CFG6&$ zpXbUh|0OThrgFIZpR{WJcYQ{|#hFXU{rrCIxQh>4Lz2rs-Vc!-3rZ7GJ@TIvs#dE4 zDjbGo&UUVKSdqdbNvYn zdtz%n$;p}tuAxqG{i{AI-Gur;2j7!#_am<8y5E*hqlm+on#Hvw{t{iq!F7_4kHO3O zpt!?ZC6lVo!;A5sAl7;OWm}8~x%Lf1cX2bfc3=aIlE5)>7G(Vvr?z`>kQrZ%m4rRB zKZ4<-%6>y|&F`0I7MRO#DRC{gO3Mx|F1c0}iHG03E#Ew`qN4RMAJ$BI^jRb-z-Kj% zqW?aoFy5Q-Pc^?+d0L*i;>8~s$r&@tWiVX+N+8b!27l;R(?j2MadFW-E(nN8t3$;| z5Ckj$-p40{j?@pAeap;pL|ne;+36)~u7%iSY2ya{VMMl3-LiMYthTC|Nc8#ZY_->bnQST>~{&j0&{8s&XN>_a8 z@$V>@vxLmf0&>$#sFD~+5<~^ufs}N9x}y|GA=&{$W|4VYm3gQYQ@F!gvX;8eS-i~4 z5=jPg+z-VmV%J5#KyK<&1>R&qdb+qja-Mf=r zi*8n{y;ud+cwug2LZ>&Rv)XeCd4sWQguf0zt_W^bgSKGm01D9T>sn?gBpXlVoxUY#d5oF|TQ0jn-U+N?CVG-!g;4ytIXt zB@&Q)mEwDB+LExK?Y1fO;C6VL_MFGkNM@xo7P0L|VbjDFg71A&Lj3S`xChg0iclNM zZ74gcHm2&0+*X*d6RBZB=MQQ~es5tVSj~I;wkvk6x3NCm7t%15jxB$h9c6jTl>s&o zinM^z80uKiWJd;M$ValDQN0KAG%`&E5s;jMrKG&7%8>Uq3?GFw>l%=BLGTCTD=4F2 zh^7y%;*654ER~4Jw?=R4mUTyjkEWa?RbFX=iWZh<0(NSrb+72B_OKet9@`fPED;8l zk}+h=a(wzj$SP)KOXnei?IXcb>>-#35+2JkWh@jX8vBLufSqA&pfn_#?~EC6T#u}IIz z$S9+O2ZQq#D`5g)-Av|NnL%41kv;*@Cq&bBB5`XlHs&+9r)FT%rUM{`a&Aw6(e2bd zZ`1Y@)pA5nB=bARkVU?e8-_c>A3ssrd^6t|J(aOiWI{&UA<$~;pFE!d?+X%PaB7HZ zA1nc{1SZlnfgUE|xUvlsGHwJrGgNFk1F%MiW9rJh;&&r_%Y*qr{tEk)5-|JW>a}aP zNJ)KvMLkLQg=+&hN{W~=%XE(-3+J3FWWc}c_Xek;E)_qu|o+0v{eQA4QK%FZ~)ym zJiJGPwoq7+dG(4B9vx6|LqHTQw$-RE53{Cx0|Q%ndpSnzbHY@Rg`=l8LB7SA6*dij z0HZB8`~~mh8F2Z7GmKRmZ=AXCLCN8y?LfSLhGwn-FXOsjYc3(7uidx{WsL)cla!b8U9fAV>klUm?#Tty zJ$^*n1}h52CW1RCHg=>gJ|kQO+}W_~K&4S$UM^yVuR>rH#DG<_%0h=#^xc6)@10oF zy7kKdGh&IeqH_U3wi7TuP~C`euqs1R_~U}7dULP>^#PYMXwMr)i8Bv%1pT@EHJsAf5D zzN|(OPk>?xiWz`u4P($PmuG@;AArP2gSR_WYnT>>_=lkeCoo1)#2o?^xPOJ7P=TW! z5qE)#7BV#jb`k*2uQ}* z%(CEhXMC`4P^+4XzNpQ$0Y?q>v)9oM|IQr+7`_ALTZL`slrV(H1UyKn#zm}Njm}#E z7!p`YW#G4hXE@stj-#a1ORHz7r10Mdx$^p!5thamZFld@k#z-Jr!>|zGs4GpWY-1+ z1S$xiBW?9~@-Nop>i*AtT>>MyQ0OM-t-wnGfCnpdlJxZS1ij_xHsOJ) zs{tT@;Q-?SfjA9JDksg=cIDMq91A7it;n$f+0zMQ)-@5 zwA^Ov!_O}BTi%;fQ1q0nTQQzpGNQa`E3UZUWt8iKNFT#Qn+MR6$1r6cVv>y5ozP8< z%3C=FcpkFd{|kEu4yYt}^FX27dvAj35; z`^(&z#`91CuBDO$b*Ntip@s`(4Sr=wi#vVW*EX4UfA;kMmL1xN*`r<9OP?Jcw2cEi z%r@Y{`YNnVfrZ_MOhN}EigbC@4X@~GmqG3q)t;lnhG>T(;FMN~|le4gx@rpJvWqAh! z8`^7?O#O7FKvAMJ&u+A9rcE9?IsR(6_IGpOoJiYIm>YOunGrTkw{Ml&=kFiRg7 zJvn96(N*MznPi!zeEBeIIDN0+$XDlTuPwoAj@0UbrucZ6{H|DU#IC>$X7QsP zuL6jO2;_7~n_9g*%2KUh{)2O^D3fPoPmW-S#|E3SY9Q z>9c=EJgR2RxO1ySSdmpRUM%A+t6DP26!^|m`G9IBIwO)u2Ak{X#4~Q6<7^qOho}Di>EuE?THle~5z=2frL zz0241T11t&TgneVb5#v{I*A?K>O>F%^P~M09QP@pO&oPkzZlaaM;{pA)%-8cH@>lW{GOi2_ z41{NtscNS19Q1Oww|DL9<~~voFYtcLSV8M$We2ar-=F2|J!vv~WuIO>^V3m_mx94f z91rg(WLzHsgK*BDKbm3OE$!)z;UhwYj>!W@PP!gjfBJ{$Fi&#CVpGlPtCP!RyeZ^S z_ufRKGLz?i+2yk#s7NB^@M=T)-c;F}FZdZyj89}`rHJErjKlGmmdss?1}R|HU~rLj z*H67-&c|{5chh3{%vkq>HpKkegVN$KpdGbBk7$*M$PGHpN3YzzUllWt8%^x9SDj6^ zQd1{G*eZWx!tG+{9=D_N56leYl^<|vi|rgOev4US;@Yyh(~V3<+eQ^W>-w-0`4wYf z*`5*!a{Yn{hHANCCTDMdn4I>y(XpZ316Vu!$&ru<2RD?;UIT-DlgA_-1~wDpMQtNdLoEtx=QJF+%+FsmRmyCy64nK<24w7+>?1B`C zxPpvM_&J3dwtl_ZxAV|S$?-+zQ^PAK{KI)_oVND;e*2E5r_0>(55op$rIvw5XJvqj z{|k>8>wE|!zE4lj?ZcWZayZqWDkSXD6=ub4mj;Vv4o;Xqw)i>YJ~>U0lY&2oGk#K? z-uLp+TAydq7aWw5v*4u}O!D;*;q?(Y$v0+yk1?+E&-;K(x(XPpK7v{bw#`oC^J#v>p)_HTVMjycp`9KU0|}cwZ-ZIjf?m5=lp0k(PH)BF|MkFZb&4GZQ;hX zWA{(@le4O3S-HdEz1zsZz#Y7GO(Wk;9o{|J{V0E2N*9W|)s);4^_(@oGY=LV<&e%} zU!5-$yFFDJAYsRRYbvT$qLuY#;_ySpWd%bAdp8MbDwbI-wWT(<#e#j3TV74?*^*1G z_Ec@}{tM5lzzHWOFMP=D;0_sW@`#p$^{eP(Gb~+1UC0sue!JIYh-Ky79JGrqGo|S5$54 zWBR}b5AzNtS%iQcKaw? zK}IwKjgMh+IDZ#|TyvS17Ye}{95}>q9~~C`fs5e~Xx)cYUj$n^EXIcB_MxuI@?~2} z$&411e<(XRiS6~p3;eMvulBY0t0(C6zP$#@&67;oG@pqs-I=vc?NwYF53cX^#)FAg zzlIn);)d7Yb!L&fLu;j^b#Kr&bLt!W4=aPD&83$gD!DpP@0q5~aNpE7PH1h~=5(f7 zh}bY%nwums!FVcQFZZ9nZ5xYuuJr9%9GhUc%g4wx$p#9q)iw2t#|?M8crd#RIp3#? zx`cL;Z2pL2Jbb{e9$gm1SVa6tp(E@Y9leis4}%<{0*{>y-MDe%Ihc+s9p*pb_d%f1 zxZhW%>Co&r|9u;}a(;$C7Fh#~lyn?MBaDl8^~{*%YBu(;@A1!3I{iJ6`s(a&J>nY= zljj2LNHK5XD5w$Idy+ZV>K=n{*3|rhp;Vi|J2$}yd7s-$lqbB$Hb#q4O<&ryk-t7r zFy@@X_8mJaVR=bZ#rSL3?qM;_D(6FM_2J2|fb`XfExVg0Y`xV>bY_`i@AI(@x#ZqC zi^6q;r$RBQr#hskZ6$N?i3>Aaw$49Q zs}NS&9CG@DxSQ{<=gJm8byt~+%G5Xp^R|le$9^+4(9}tw1BJ88QPDwQw+JIOqUI05 zv>q;iq+137BLS<-;BT7&Iuv~nf82V;R>*8ba^dp<`5)2MSLH{*iIbgH);_}6nBhI7 z0k)Y?p?NxM&7IN%@sL_zMct3Q5V(9{`s|P(KS~YspLgs(qRPhi1IkZu9X#=Pb7G4kzK327(k}W5bd1Um4(OZBaF*s%L#RPK*&09@ zApyM5L|C9Y;3%yor^vmGXph$wJk~0oh6|riyA%o>M8W*o#<{ceXb!dJtgk~u!u*e&$DWkz{c|s}lB$O8hBS!cn_vue(NaO(62JIo*exk|YZ-LBp zIQlbr=^IY)5B{9KloOscR7)McuHp9HY5M9J_nR$+fisT-4VKni@?c3i#T~vi^KHft zXgiQdpa$>+1N|Aas_DoN#{Y4oW;l^dm*SF5pXU6EqvS#seI_4kO0JIKEdAG&D349i zTJJinKPKx5Dx1=Q4ge3x`2S`Qz$EY#s3)#}Tea-3MQ&xfbCzGBV!`C_ypx{Lm1hh_ zANkERzDLUVn|nLP7#Zzy)2kCNyJcX7pD3Z+LS}26Q>n02E}3{s^|MF?&u&Wj8(J$~ z5L7zj6qgF7IOKLmBgU@rC}vyNSN)>-YzYY(P3wRE|45s&_c3mU}1 zW;4$1x8$!cFZd4|?`?jdtd()h)4S=*<0sCq-p*``aHN!WRA{%Rv{|K|S)~Ma{P@<4 znK(xcIqn(wHIvZ^6X1q1IZxnZbna!T5!J4NqzE2M9Ju3$1-vyb?s9njuCgv-M(6E6 zez08Tlb~}PRO$*Lhwbz+^b+w_x?ZvP@87>klW;!VuvI&Em09L@Np1GKK})Tq%?I0! z^A$GEW|sHqPc#KTrAXTRe2VXV+5_rTQ{ndB%O4yNrA#_SxCNOIpp#kb9vpu%G@qM1 zrRDI+h&Jv%Q2j8b@l)P4`R^HvO7HJU@UsdCXJ32ZVP)1LuU6{IS>y2Ngb$@XEQsE$ zuDFqB8skm{bL2R>1X-y@QLwM zes$j)`TNzqmM03mFWCpqS{G3WCuWcA{wl&udBOXOjBJQSiroXBIz8$2Oo68_>FEuB z&DlrjP5^xzsJ9alP-@=rzyaxtuCdPwGpIcaMQ!=`YO}0qJ$7KUJsf)=FtpBV>!Y1)t);%q&`UFTX&UjR%8y1lLSTT z&Xk@;t4Ey_#HuG7 zL)$XgDLbX%m6F)+UTg44Sl!e}XO6O=2#?e0q{)g^DM`t?vk|oE z<Z1U{DFsGNSG&c_j+Z9( zj2>LRZFBm219di1QOFqv65Kmtbq=se(sQYRj0a2t;*VJ^eouhHD4MB#^UYty-jUx+ z)ACf-EG)XzG17M&lzU&*^$gNbxVr2l@e<}A9#sUf9wDe3w9FQ$c)8vww0x$mPBXDI zCgo75@jZSR9KErp|97l-fM)o%FD`RGc)kj;yg!`Z_F(eh*)L<&{>jbG#2rc)xqCob z$@hs8Ho5!n`<(CN*1- z7k}pN-9>G;gNxDA}=r25-7wM_Z+m0TES>dG^1$f;_t#u50GYH5Ds=bu-)Q<}?4O1X1t zBa`zVu0@zm1;oAS+BqB~vjDXfM(0P+jD{ZPs~*zGpU2v`VgD{uv@cgZexcJB$jKfw zk(k^4d38;k*J1m#_h}2aIAY*jy9XF8u9l2tjbg-pF0tA>E(!`2D-VjP^_{|{%>Ia^ z$T1wf)O;C*^;5p#H^a^PTN~0&M5xT9h;Y<^Ubh4{Wc<_kbMM=?St_wQ#cd}`%3Zrv zT4t;NgMjFWNK#meOXP1HdU@yT)y3a`Uv0V>;EStb4tnKUEKh2%g0cjn)a^dCm6+y= zi+@3nKe?euov<|?weq;8m&hbVUnsBq%eRAGL3ZibqDYL!^Tf$rYNctT`rK@=x2=si zEC?f{G~gVhqZ{qa4~E5flq`3Z2JRJp(R9ppzhBjkAQs%S>P){^V4QWp6$-~oYu08d zmgcb38VWrC4)Wc7N|{94AmXe7J^-xbCmH4p+ep}lWr@cpYK_rNXX?>i|B>d--DGLs zn|)m>*k!MO2W4Z=Nsy<7yJn>J?>b@4JyiN9SrVot=~jqEA(9l z8Hm#hK!+&ozA#(`^`fskd2$0R$)6x30KXa*^pyU2dyq2OfQ2(T-S(Xc8o<;WYO_P~ zwsMQ4^Pzi*ia~!)q?fo)U-WqirjPYiXBoKF+sz*N;B!LOzb@zH+@@3J=Az6b>isw5L zh9A!8n27j=0`C%74^%P7tbV8G;@DxbRK*u$Ja$7AA3um)T{9nD-xdLJx9vaRDbGhtUMgo#nTaXgPi6?dTF2$OSQph}-nNzx{9@#*S`V;_Jb&<}_r)0WvBcGpWTD{e z!Q&{=L;?dWqG;5Ro52;fiP1_ck4xc`a?nm%cB|d$_0(x8%`bJ2w1zBFeu~ zjCde6Fv5oAYvdnnncP4LaAG9r+rW>ef2bT+puNmXhS*MGtwF;4KEtj6j8}F$JHBoFRsDc%$`0OvtoGcm z@W%R|LkyGGlw}9_Y2&bve~r4rb{3WoBq;BDiKIrVk`d-ZV!nqa z^BgWljU5KfTh1e2COfRNCYPp~G@ff706&4!zup}V`RRx;!`0kSUSB^_Vd$?;35TG6 zup*Ok%SUIupjC-*b;%*S79o@dITi$6PUfHVD(1)f|x}`zmLdpi=NL&h zA)UEJyhkK@A`MJad3pe_y|xW-juUv&-P#}#-8?ru;>N7GSA0k*N6~RYWZ4j zk`BSltU!pg^zp60@q>_8+us|q93TjWHU7*MhB;Vn+8=#v^({+sroG7U^0EFJU*+`^ z4u_6iGrIr36#%QnH;XbWB1&f#*3GX^oc!^ixN6nYI?_};M$%UoYJQjP52p@u7pbcX6;3)O?H`uoJB4jJATCMc zej2?t7%9~>HI0Xi{qXV+2r!wO=tZ``e0tos-v(Ox`uY#P>cg2n;GzDFI^3D+>grF3 zhD5?>U|L#Q|FG}RA`(mZ)S%2W@`kzFMZDGjgDyZL@3PeM;O~Y@MTR#@)ME8t#aDEW zO^&r<+3Xh(kc8GTC{5&UbMG&i?BzoR*BSKZH@rWr7*U07Cx{DpQKDF;3ctZL1i=%= zxzhOxe58NC`4_q@5YNmerlCz|%G862FU|7P6S8l^yCXx=UZ@#`_B7bl{&x*vTckcJ zwd1LGSG4LN7HYelIpby*o)))>%nxgz2+)UZ?IDYpBfeDV+YQY2vV zc_x^R`0{I z-d}Ul`+=trOznfN@=4UG{MG&==Sq&OZk9de!PG56%RXB}Sud_9bf)Kc_B}wDz_8?`~~m{9e%2vTGneYV2@T>v+30)ypO6PR^Q>3$Tp`m_w)l z`L^E}#cdc7aC#8mf4Rwb-QmOkA}jHw+p~?<`_iy;3kf~IF7_VyY1ppRqp6mFAvDwy z36SZ~(8c0q#NU*ZmQK#hV7f+53TP)P&GufYG5u|M{k>QMgoSAYxt8L+Ps}nKsx)-! zyO`{gSg%5>_R+WLq9#Xh{_cape#_mJrXpP99?l|tHg9~Ve!Y>nplsr%g~CsDVZqxnW%Jx+=<~ z|4VFg=MV z9%2{j2*8-_tE$mC z`7_iIP*x^`^A!GL2_r=&ylcRAAWq9Lt|wGEJe0NZGBQMp)Y{4b)fMK8cUbN4o_|UU zRf_Y{cG$;nI^)23Sek#aJNZfNC7YtYszBa_70(AE^QCjCatwcN6mzHV@yh+K)j*k8 zk)7;YnyHjF4}pS&+2id?oTVxuePvl zn-Sq?fuKSsaN=q{Q}2-UPUS!7TP*@f@=?9VbGgc94k^{P5z!2p?6(WAjIDmNm!^Lj zyZ^80$(f{ZV|=0wtS?E}HAoCo6`R-rZin>q9dB{E7F$|*hF|65(-WQ)hxad5MVmz3 zZLXkOzq+)czMEov>7&^e2)&EH1o)n95?Wuf_`4YK;OvAx0EgdflbUUiR`oJ+pA5pW z5=Ui3=G(3B=MOEsqAZY*seb)Q!RRxckPXW=-yh}A4URXw(YY*stM(EGYf$0v0{H~) zKAh|LLxu1tA<%oYkMc5A2+Kb;_k!S2rJOFdrRHTF2iJmRPY0#^ipi82J%7b7IXpEb zOFJHZ*gPo&tY>AepN3E<&zmxw6;B_H z1Umweqh#?&Qe%PjP2i$q1`J7R7hUAmA#b%#%I%WwY-(v+9aGKB25JlOitz(`4zhHt zP`0|=RQz-JFRi36*_GovAn|kATdx|6^5bXE`eE*t3{}=za^8DiHXv9nUr8UdS(l>Q zOS5P0?{u!F_1soECcwK8i<9ymY8Qgmurx{qc+HzaVsJsRTWVr9Jux5}oms#Tb$oTB zZ|#q<_b_JY{V^Q6q*ET8M6YcOy8G8d8&QSzS&ZWM#y(qpP#YAk9t#UDECVU9EJWB{ z`|B$)EYR+rh3%!CSY+ z=z>gmg}(-aZ_*zvr3|^SE_Uv!%5Zhye6U%@f*vD72&!ZHZtj!D4x?RTmfu&F_iXg| z7WFBGdETQ-h*@KDD$&U;Wbm(CZ(sb(fVSaCRYz$0+_;~Oa+@;{%TJ<#kYo0Zjg2vK zoD4E;Vd(U>n`#}(6Mgm|{<^+EVA^xOzYlBD#2YBvW;(3{^}5zV(V->%YFyhcT!gW& zj?Bu@hwT~>_C|94c5o~8pxUOQ+5!(B;1yT4pL>7odz9OQo42Lizl%KRsyo=1G3soY z$^Lp=t$*P5FQHvA2CjVX1l2D@iI{1>y39b>LC9?+$SiqjB_!)=lWW^yQFM$Wt|B1# z$?!eFPEGFke14VmD5%u@-fVro>3A(0)|wk$Zw!l}zU{|ZT;}>7?6a>Wu7?Q64{^&t zSvby|!w^{t!;Y)fTP{DGF)9o2_uu>eeGP(2M;D#%)fN39Lm z)<1Z;@5gVk(L*)r&$nvsx4%2F$T+m>uG12fhosE)lUkL1#vQb+lvu zUN9h*HBoAJ4;(u^m2jK-Mxns(gHa_O7o<2(R@~j5ZM*sCBKOP3Ti%=knLJcE^AUA6 zq9|Y}3J%6WQa=$$goFL9u#z8(?AlF&XM~K~h4<6{=^eQyJMibK{0eVG19h5aWl@D% z>UPmZ3U^9*uoR?H=)v>oMPo=N03fz@iQR->?jA19tftY>%7(^n}9mY#%yat_H60B>rAMfGyV)g{

;_S0#76%> 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%0D`l13Vh7sHUy4G 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 diff --git a/labs/lab_02/Lab_02_files.png/diagr.png b/labs/lab_02/Lab_02_files.png/diagr.png new file mode 100644 index 0000000000000000000000000000000000000000..5182ba934f6d1a22d7e79becdb80b3734c99e5c9 GIT binary patch literal 97470 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%0AcyN-oV>k&qX)7c?vAak!fGGz`isP@0?H_t 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

*$d_% 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 literal 0 HcmV?d00001 diff --git a/labs/lab_02/Lab_02_files.png/sliya_sort.png b/labs/lab_02/Lab_02_files.png/sliya_sort.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9f6bd785e519da6fdb06dc6912d468c6c3e001 GIT binary patch literal 70445 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 + ### **Критерии сравнения:** #### 1.Временная сложность: ##### Сортировка слиянием (Merge Sort): @@ -551,6 +552,363 @@ k - количество блоков Неустойчивая: если использовать неустойчивую сортировку блоков + +## Контрольные вопросы: +Сортировка вставками (Insertion Sort) +1. В чем состоит суть метода сортировки вставками? +Суть метода заключается в том, что массив постепенно перестраивается путем последовательной вставки каждого следующего элемента в уже упорядоченную часть массива. Мы как бы "вставляем" карту в нужное место в уже отсортированной руке. + + + +def insertion_sort(arr): + for i in range(1, len(arr)): + key = arr[i] + j = i - 1 + # Сдвигаем элементы отсортированной части, которые больше key + while j >= 0 and arr[j] > key: + arr[j + 1] = arr[j] + j -= 1 + # Вставляем key на правильную позицию + arr[j + 1] = key + return arr + + +4. В чем достоинства и недостатки метода сортировки вставками? + +Достоинства: + +Прост в реализации. + +Эффективен на небольших наборах данных. + +Эффективен на практически отсортированных массивах (сложность接近 O(n)). + +Является устойчивой (stable) сортировкой. + +Сортирует "на месте" (in-place), не требует дополнительной памяти. + +Недостатки: + +Имеет высокую среднюю временную сложность O(n²), что делает его неэффективным для больших массивов. + +5. Приведите практический пример сортировки массива методом вставок. +Массив: [12, 11, 13, 5, 6] + +i=1: [11, 12, 13, 5, 6] (11 вставлен перед 12) + +i=2: [11, 12, 13, 5, 6] (13 остался на месте) + +i=3: [5, 11, 12, 13, 6] (5 вставлен в начало) + +i=4: [5, 6, 11, 12, 13] (6 вставлен между 5 и 11) + + + +Сортировка Шелла (Shell Sort) +6. В чем состоит суть сортировки методом Шелла? +Это усовершенствование сортировки вставками. Суть в том, что массив сортируется в несколько этапов с использованием убывающей последовательности шагов (gaps). На каждом этапе сортируются подмассивы элементов, отстоящих друг от друга на расстоянии gap. + +7. За счет чего метод Шелла дает лучшие показатели по сравнению с простейшими методами? +За счет того, что на начальных этапах (с большим gap) элементы "перепрыгивают" на значительные расстояния, что позволяет быстрее занять свою приблизительную позицию. + +9. Какой фактор оказывает наибольшее влияние на эффективность сортировки методом Шелла? +Наибольшее влияние оказывает выбор последовательности шагов (gaps). Разные последовательности дают разную теоретическую и практическую производительность. + +10. Какие последовательности шагов группировки рекомендуются для практического использования в методе Шелла? + +Последовательность Кнута: (3^k - 1) / 2 (1, 4, 13, 40, 121, ...). Хороший баланс между простотой и эффективностью. + +Последовательность Седжвика: 9 * (4^(k-1) - 2^(k-1)) + 1 и 4^k - 3 * 2^k + 1 (1, 8, 23, 77, 281, ...). Одна из лучших известных последовательностей. + +Последовательность Хиббарда: 2^k - 1 (1, 3, 7, 15, 31, ...). + +def shell_sort(arr): + n = len(arr) + # Начинаем с большого gap, затем уменьшаем его + gap = n // 2 + while gap > 0: + # Применяем сортировку вставками для этого gap + for i in range(gap, n): + temp = arr[i] + j = i + while j >= gap and arr[j - gap] > temp: + arr[j] = arr[j - gap] + j -= gap + arr[j] = temp + gap //= 2 # Уменьшаем gap + return arr + +Сортировка выбором (Selection Sort) +12. В чем состоит суть метода сортировки выбором? +Суть в том, что массив мысленно делится на две части: отсортированную (в начале) и неотсортированную. На каждом шаге алгоритм ищет минимальный элемент в неотсортированной части и меняет его местами с первым элементом неотсортированной части. Таким образом, размер отсортированной части увеличивается на один элемент. + +def selection_sort(arr): + for i in range(len(arr)): + min_idx = i + # Находим индекс минимального элемента в неотсортированной части + for j in range(i + 1, len(arr)): + if arr[j] < arr[min_idx]: + min_idx = j + # Меняем найденный минимальный элемент с первым неотсортированным + arr[i], arr[min_idx] = arr[min_idx], arr[i] + return arr + + +15. В чем достоинства и недостатки метода сортировки выбором? + +Достоинства: + +Прост в понимании и реализации. + +Производит минимальное количество обменов (всего O(n)). Полезно, когда стоимость операции обмена высока (например, сортировка данных на внешних носителях). + +Сортирует "на месте". + +Недостатки: + +Всегда имеет временную сложность O(n²), независимо от исходного состояния массива. + +Не является устойчивой (unstable) сортировкой. + + + +Сортировка обменом (Пузырьковая сортировка - Bubble Sort) +17. В чем состоит суть метода сортировки обменом? +Суть в последовательном сравнении соседних элементов и их обмене, если они находятся в неправильном порядке. В результате каждого полного прохода по массиву самый "тяжелый" (максимальный) элемент "всплывает" в конец массива, как пузырёк. + + +def bubble_sort(arr): + n = len(arr) + for i in range(n): + swapped = False # Флаг оптимизации + # Последние i элементов уже на месте + for j in range(0, n - i - 1): + if arr[j] > arr[j + 1]: + arr[j], arr[j + 1] = arr[j + 1], arr[j] + swapped = True + # Если обменов не было, массив отсортирован + if not swapped: + break + return arr + + +20. В чем достоинства и недостатки метода сортировки обменом? + +Достоинства: + +Чрезвычайно прост для понимания. + +Является устойчивой сортировкой. + +Сортирует "на месте". + +Недостатки: + +Очень медленный. Имеет среднюю и наихудшую временную сложность O(n²). + +На практике почти всегда уступает другим алгоритмам, кроме, возможно, сортировки вставками на очень маленьких или почти отсортированных массивах. + + +Быстрая сортировка (Quicksort) +22. В чем состоит суть метода быстрой сортировки? +Это алгоритм типа "разделяй и властвуй". Он выбирает опорный элемент (pivot), переупорядочивает массив так, чтобы все элементы меньше опорного оказались слева от него, а все больше — справа (этот процесс называется разбиение Хоара). Затем алгоритм рекурсивно применяется к двум подмассивам слева и справа от опорного элемента. + +23. За счет чего метод быстрой сортировки дает лучшие показатели по сравнению с простейшими методами? +За счет того, что после разбиения элементы оказываются в правильной позиции относительно опорного, и дальнейшая сортировка подмассивов происходит независимо. В среднем случае это дает временную сложность O(n log n). На практике он очень эффективен из-за малого количества обменов и внутреннего цикла. + +24. Что такое опорный элемент в методе быстрой сортировки и как он используется? +Опорный элемент (pivot) — это элемент массива, относительно которого происходит разделение. После разбиения он занимает свою окончательную позию в отсортированном массиве. Алгоритм гарантирует, что все элементы слева <= pivot, а справа >= pivot. + +25. Приведите практический пример быстрой сортировки массива. +Массив: [10, 80, 30, 90, 40, 50, 70]. Опорный элемент (pivot) — последний (70). + +Разбиение: + +i указывает на границу элементов, меньших опорного. + +Проходим j по массиву. Если arr[j] <= pivot, меняем arr[i] и arr[j], увеличиваем i. + +В конце меняем arr[i] и pivot. + +Результат разбиения: [10, 30, 40, 50, 70, 90, 80]. Pivot (70) на своем месте. + +Рекурсивно применяем к подмассивам [10, 30, 40, 50] и [90, 80]. + +26. Что можно сказать о применимости метода быстрой сортировки с точки зрения его эффективности? +Это один из самых эффективных и широко применяемых алгоритмов сортировки общего назначения. Он особенно хорошо работает со случайными данными и в среднем случае. Однако он может быть нестабильным и имеет плохую производительность в худшем случае O(n²). + +27. Какой фактор оказывает решающее влияние на эффективность метода быстрой сортировки? +Выбор опорного элемента. Если опорный элемент постоянно оказывается минимальным или максимальным (например, в уже отсортированном массиве при выборе первого/последнего элемента), разбиение будет крайне несбалансированным, что приводит к худшему случаю O(n²). + +28. Почему выбор серединного элемента в качестве опорного в методе быстрой сортировки может резко ухудшать эффективность метода? +Вопрос сформулирован неточно. Выбор серединного элемента как раз является хорошей стратегией для избежания худшего случая на уже отсортированных массивах. Ухудшение эффективности наступает при выборе крайних элементов (первого или последнего) в уже отсортированном или почти отсортированном массиве. + +29. Какое правило выбора опорного элемента в методе быстрой сортировки является наилучшим и почему его сложно использовать? +Наилучшим является медиана трех (медиана из первого, среднего и последнего элементов). Она почти гарантирует сбалансированное разбиение. Однако ее сложно использовать, потому что точное вычисление медианы для всего массива слишком дорогое, а "медиана трех" является хорошим и быстрым приближением. + +30. Какое простое правило выбора опорного элемента в методе быстрой сортировки рекомендуется использовать на практике? +Рекомендуется использовать "медиану трех" (первый, средний, последний элементы) или случайный выбор опорного элемента. Оба этих подхода с высокой вероятностью предотвращают наступление худшего случая. + + +31. Какие усовершенствования имеет базовый алгоритм метода быстрой сортировки? + +Использование "медианы трех" для выбора опорного элемента. + +Рекурсивная сортировка меньшего подмассива первым для ограничения глубины рекурсии. + +Использование сортировки вставками для маленьких подмассивов (например, размером < 10). + +Нерекурсивная (итеративная) реализация с использованием стека. + +32. Почему быстрая сортировка проще всего программно реализуется с помощью рекурсии? +Потому что алгоритм по своей природе рекурсивен: после разбиения задача сводится к решению двух независимых и аналогичных подзадач (сортировка левого и правого подмассивов). Рекурсия интуитивно отражает эту логику "разделяй и властвуй". + +33. Как программно реализуется рекурсивный вариант метода быстрой сортировки? + + +def quicksort(arr): + if len(arr) <= 1: + return arr + else: + # Выбор опорного элемента (здесь - последний) + pivot = arr[-1] + # Разбиение Хоара + less = [x for x in arr[:-1] if x <= pivot] + greater = [x for x in arr[:-1] if x > pivot] + # Рекурсивный вызов и объединение + return quicksort(less) + [pivot] + quicksort(greater) + +Более эффективная in-place версия: +def quicksort_in_place(arr, low=0, high=None): + if high is None: + high = len(arr) - 1 + if low < high: + # pi - индекс разбиения, arr[pi] на своем месте + pi = partition(arr, low, high) + quicksort_in_place(arr, low, pi - 1) + quicksort_in_place(arr, pi + 1, high) + +def partition(arr, low, high): + pivot = arr[high] + i = low - 1 + for j in range(low, high): + if arr[j] <= pivot: + i += 1 + arr[i], arr[j] = arr[j], arr[i] + arr[i + 1], arr[high] = arr[high], arr[i + 1] + return i + 1 + + +34. Какие особенности имеет не рекурсивная программная реализация метода быстрой сортировки? +Она эмулирует рекурсию с помощью стека. В стек помещаются границы подмассивов (low и high), которые нужно отсортировать. Алгоритм продолжается, пока стек не пуст. + +Особенности: + +Требует явного управления стеком. + +Позволяет избежать ограничений на глубину рекурсии. + +Может быть более эффективной по памяти, если сначала помещать в стек больший подмассив. + + +Пирамидальная сортировка (Heapsort) +35. В чем состоит суть метода пирамидальной сортировки? +Суть в использовании структуры данных "куча" (пирамида - heap). Алгоритм состоит из двух этапов: + +Построение из массива невозрастающей пирамиды (max-heap), где корень каждого поддерева является наибольшим элементом. + +Последовательное извлечение максимального элемента из кучи и перестроение оставшейся части. + +36. Какой набор данных имеет пирамидальную организацию? +Пирамидальную организацию имеет двоичная куча (binary heap). Это полное бинарное дерево, которое удовлетворяет свойству кучи: ключ каждого узла >= (для max-heap) ключей его потомков. + + + + +38. Приведите пример пирамидального дерева с целочисленными ключами. +Массив: [4, 10, 3, 5, 1]. Max-Heap в виде дерева: + + + 10 + / \ + 5 3 + / \ + 4 1 +Соответствующий массив для кучи: [10, 5, 3, 4, 1]. + +39. Какие полезные свойства имеет пирамидальное дерево? + +Максимальный (или минимальный) элемент всегда находится в корне. + +Можно эффективно вставлять новые элементы и извлекать корневой, сохраняя свойства кучи (за O(log n)). + +Представление в виде массива очень компактно и не требует хранения указателей. + +40. Какие шаги выполняются при построении пирамидального дерева? +Построение снизу вверх (алгоритм Флойда). + +Начинаем с последнего нелистового узла (индекс n//2 - 1). + +Для каждого такого узла выполняем операцию просеивания вниз (sift down), чтобы восстановить свойство кучи для поддерева с корнем в этом узле. + +Переходим к предыдущему узлу (уменьшаем индекс) и повторяем шаг 2, пока не дойдем до корня. + +41. Что такое просеивание элемента через пирамиду? +Просеивание вниз (sift down) — это процесс восстановления свойства кучи для узла i. Если узел i меньше какого-либо из своих потомков, он меняется местами с наибольшим из потомков. Процесс повторяется рекурсивно для поддерева, в которое "упал" узел, пока свойство кучи не будет восстановлено. + +42. Приведите практический пример построения пирамидального дерева. +Массив: [4, 10, 3, 5, 1]. + +Начинаем с последнего нелистового узла (индекс = 1, элемент 10). Его поддерево уже является кучей. + +Переходим к корню (индекс = 0, элемент 4). + +Просеиваем 4 вниз: сравниваем с потомками (10 и 3). 10 - наибольший. Меняем 4 и 10. + +Новый массив: [10, 4, 3, 5, 1]. + +Просеиваем 4 (теперь на индексе 1): сравниваем с потомками (5 и 1). 5 - наибольший. Меняем 4 и 5. + +Итоговый массив (max-heap): [10, 5, 3, 4, 1]. + +43. Какие шаги выполняются на втором этапе пирамидальной сортировки? + +Поменять местами корневой (максимальный) элемент кучи с последним элементом неотсортированной части. + +Уменьшить размер кучи (мысленно отрезать последний элемент, который теперь на своем месте). + +Выполнить sift down для нового корня, чтобы восстановить свойства кучи в уменьшенной куче. + +Повторять шаги 1-3, пока размер кучи не станет равен 1. + +44. Приведите практический пример реализации второго этапа пирамидальной сортировки. +Начальная куча (и массив): [10, 5, 3, 4, 1] + +Шаг 1: Меняем 10 и 1. Массив: [1, 5, 3, 4, | 10]. Просеиваем 1. + +[5, 1, 3, 4, | 10] -> [5, 4, 3, 1, | 10]. + +Шаг 2: Меняем 5 и 1. Массив: [1, 4, 3, | 5, 10]. Просеиваем 1. + +[4, 1, 3, | 5, 10]. + +Шаг 3: Меняем 4 и 3. Массив: [3, 1, | 4, 5, 10]. Просеиваем 3. + +[3, 1, | 4, 5, 10] (не изменилось). + +Шаг 4: Меняем 3 и 1. Массив: [1, | 3, 4, 5, 10]. Сортировка завершена. + +45. Что можно сказать о трудоемкости метода пирамидальной сортировки? + +Временная сложность: Всегда O(n log n), как в среднем, так и в худшем случае. + +Сложность по памяти: O(1), так как сортировка происходит "на месте". + +Это делает пирамидальную сортировку надежной и предсказуемой, хотя на практике она часто немного медленнее, чем хорошо оптимизированная быстрая сортировка, из-за большего количества сравнений и худшей локализации ссылок (cache performance). + + + + ```python ``` From 0316248e7726abbc870ce4d4dfec41ff4267c5cb Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 12 Oct 2025 18:54:58 +0300 Subject: [PATCH 12/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_03/Untitled.md | 1328 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1328 insertions(+) create mode 100644 labs/lab_03/Untitled.md diff --git a/labs/lab_03/Untitled.md b/labs/lab_03/Untitled.md new file mode 100644 index 0000000..ee9705d --- /dev/null +++ b/labs/lab_03/Untitled.md @@ -0,0 +1,1328 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# **Линейные списки (Linked list)** + + +## **Цель работы** + + +изучение структуры данных «Линейные списки», а также основных операций над ними. + + +### Задание 1 + +```python +from typing import Any, Optional, TypeVar + +ValueType = TypeVar('ValueType') + +class Node: + """Узел односвязного списка""" + def __init__(self, value: ValueType): + self.value = value + self.next: Optional['Node'] = None + + def __str__(self): + return f"Node({self.value})" + + +# ===== ВЕРСИЯ 1 ===== +class SingleLinkedListV1: + """Базовая версия односвязного списка""" + + def __init__(self): + """Возвращает пустой односвязный список""" + self.head: Optional[Node] = None + + def insert_first_node(self, value: ValueType) -> None: + """Добавить узел в начало списка""" + new_node = Node(value) + new_node.next = self.head + self.head = new_node + + def remove_first_node(self) -> ValueType: + """Удалить первый узел списка и вернуть его значение""" + if self.head is None: + raise IndexError("Cannot remove from empty list") + + value = self.head.value + self.head = self.head.next + return value + + def insert_last_node(self, value: ValueType) -> None: + """Добавить узел в конец списка""" + new_node = Node(value) + + if self.head is None: + self.head = new_node + return + + current = self.head + while current.next is not None: + current = current.next + current.next = new_node + + def remove_last_node(self) -> ValueType: + """Удалить последний элемент списка""" + if self.head is None: + raise IndexError("Cannot remove from empty list") + + # Если в списке только один элемент + if self.head.next is None: + value = self.head.value + self.head = None + return value + + # Ищем предпоследний элемент + current = self.head + while current.next.next is not None: + current = current.next + + value = current.next.value + current.next = None + return value + + def __str__(self): + values = [] + current = self.head + while current: + values.append(str(current.value)) + current = current.next + return " -> ".join(values) if values else "Empty list" + + +# ===== ВЕРСИЯ 2 ===== +class SingleLinkedListV2(SingleLinkedListV1): + """Добавлены методы поиска и замены""" + + def __init__(self): + super().__init__() + self._size = 0 + + def get_size(self) -> int: + """Вернуть длину списка""" + return self._size + + def insert_first_node(self, value: ValueType) -> None: + super().insert_first_node(value) + self._size += 1 + + def remove_first_node(self) -> ValueType: + value = super().remove_first_node() + self._size -= 1 + return value + + def insert_last_node(self, value: ValueType) -> None: + super().insert_last_node(value) + self._size += 1 + + def remove_last_node(self) -> ValueType: + value = super().remove_last_node() + self._size -= 1 + return value + + def find_node(self, value: ValueType) -> Optional[ValueType]: + """Найти (первый) узел по его значению и вернуть значение""" + current = self.head + while current: + if current.value == value: + return current.value + current = current.next + return None + + def replace_node(self, old_value: ValueType, new_value: ValueType) -> None: + """Найти (первый) узел по его значению и заменить его значение новым""" + current = self.head + while current: + if current.value == old_value: + current.value = new_value + return + current = current.next + + def remove_node(self, value: ValueType) -> ValueType: + """Найти (первый) узел по его значению и удалить его""" + if self.head is None: + raise ValueError("Value not found in list") + + # Если удаляем голову + if self.head.value == value: + return self.remove_first_node() + + # Ищем узел для удаления + current = self.head + while current.next and current.next.value != value: + current = current.next + + if current.next is None: + raise ValueError("Value not found in list") + + value_to_return = current.next.value + current.next = current.next.next + self._size -= 1 + return value_to_return + + +# ===== ВЕРСИЯ 3 ===== +class SingleLinkedListV3(SingleLinkedListV2): + """Оптимизированная версия с O(1) для get_size""" + + def __init__(self): + super().__init__() + # Размер уже хранится в _size и обновляется при операциях + + +# ===== ВЕРСИЯ 4 ===== +class SingleLinkedListV4(SingleLinkedListV3): + """Добавлены методы для работы с соседними узлами""" + + def _find_node_object(self, value: ValueType) -> Optional[Node]: + """Внутренний метод для поиска узла-объекта""" + current = self.head + while current: + if current.value == value: + return current + current = current.next + return None + + def find_previos_node(self, value: ValueType) -> Optional[ValueType]: + """Найти значение из предыдущего узла""" + if self.head is None or self.head.value == value: + return None # У первого элемента нет предыдущего + + current = self.head + while current.next: + if current.next.value == value: + return current.value + current = current.next + return None + + def find_next_node(self, value: ValueType) -> Optional[ValueType]: + """Найти значение из следующего узла""" + node = self._find_node_object(value) + if node and node.next: + return node.next.value + return None + + def insert_before_node(self, target_value: ValueType, new_value: ValueType) -> None: + """Добавить узел перед узлом с заданным значением""" + if self.head is None: + return + + # Если вставляем перед головой + if self.head.value == target_value: + self.insert_first_node(new_value) + return + + # Ищем узел, предшествующий целевому + current = self.head + while current.next and current.next.value != target_value: + current = current.next + + if current.next is None: # Узел не найден + return + + new_node = Node(new_value) + new_node.next = current.next + current.next = new_node + self._size += 1 + + def insert_after_node(self, target_value: ValueType, new_value: ValueType) -> None: + """Добавить узел после узла с заданным значением""" + target_node = self._find_node_object(target_value) + if target_node is None: + return + + new_node = Node(new_value) + new_node.next = target_node.next + target_node.next = new_node + self._size += 1 + + def replace_previos_node(self, target_value: ValueType, new_value: ValueType) -> None: + """Заменить значение в предыдущем узле""" + if self.head is None or self.head.value == target_value: + return # У первого элемента нет предыдущего + + current = self.head + while current.next: + if current.next.value == target_value: + current.value = new_value + return + current = current.next + + def replace_next_node(self, target_value: ValueType, new_value: ValueType) -> None: + """Заменить значение в следующем узле""" + target_node = self._find_node_object(target_value) + if target_node and target_node.next: + target_node.next.value = new_value + + def remove_previos_node(self, target_value: ValueType) -> Optional[ValueType]: + """Удалить предыдущий узел""" + if self.head is None or self.head.value == target_value: + return None # У первого элемента нет предыдущего + + # Если удаляем элемент перед головой (невозможно по логике) + if self.head.next and self.head.next.value == target_value: + return self.remove_first_node() + + # Ищем узел, который находится за два узла до целевого + current = self.head + while current.next and current.next.next: + if current.next.next.value == target_value: + value_to_return = current.next.value + current.next = current.next.next + self._size -= 1 + return value_to_return + current = current.next + + return None + + def remove_next_node(self, target_value: ValueType) -> Optional[ValueType]: + """Удалить следующий узел""" + target_node = self._find_node_object(target_value) + if target_node and target_node.next: + value_to_return = target_node.next.value + target_node.next = target_node.next.next + self._size -= 1 + return value_to_return + return None + + +# ===== ВЕРСИЯ 5 ===== +class SingleLinkedListV5(SingleLinkedListV4): + """Версия с ссылкой на последний элемент для оптимизации""" + + def __init__(self): + super().__init__() + self.tail: Optional[Node] = None + + def insert_first_node(self, value: ValueType) -> None: + new_node = Node(value) + new_node.next = self.head + self.head = new_node + + if self.tail is None: # Если список был пуст + self.tail = new_node + + self._size += 1 + + def remove_first_node(self) -> ValueType: + if self.head is None: + raise IndexError("Cannot remove from empty list") + + value = self.head.value + self.head = self.head.next + + if self.head is None: # Если список стал пуст + self.tail = None + + self._size -= 1 + return value + + def insert_last_node(self, value: ValueType) -> None: + new_node = Node(value) + + if self.tail is None: # Пустой список + self.head = new_node + self.tail = new_node + else: + self.tail.next = new_node + self.tail = new_node + + self._size += 1 + + def remove_last_node(self) -> ValueType: + if self.head is None: + raise IndexError("Cannot remove from empty list") + + # Если в списке только один элемент + if self.head == self.tail: + value = self.head.value + self.head = None + self.tail = None + self._size -= 1 + return value + + # Ищем предпоследний элемент + current = self.head + while current.next != self.tail: + current = current.next + + value = self.tail.value + current.next = None + self.tail = current + self._size -= 1 + return value + + +# ===== ВЕРСИЯ 6 ===== +class SingleLinkedListV6(SingleLinkedListV5): + """Версия с оптимизацией вставки перед узлом""" + + def insert_before_node(self, target_value: ValueType, new_value: ValueType) -> None: + """Оптимизированная вставка перед узлом""" + if self.head is None: + return + + # Если вставляем перед головой + if self.head.value == target_value: + self.insert_first_node(new_value) + return + + # Ищем узел, предшествующий целевому + current = self.head + while current.next and current.next.value != target_value: + current = current.next + + if current.next is None: # Узел не найден + return + + # Создаем новый узел и вставляем его + new_node = Node(new_value) + new_node.next = current.next + current.next = new_node + self._size += 1 + + def remove_node(self, value: ValueType) -> ValueType: + """Оптимизированное удаление узла""" + if self.head is None: + raise ValueError("Value not found in list") + + # Если удаляем голову + if self.head.value == value: + return self.remove_first_node() + + # Если удаляем хвост + if self.tail and self.tail.value == value: + return self.remove_last_node() + + # Обычный поиск и удаление + current = self.head + while current.next and current.next.value != value: + current = current.next + + if current.next is None: + raise ValueError("Value not found in list") + + value_to_return = current.next.value + current.next = current.next.next + + # Если удалили хвост, обновляем tail + if current.next is None: + self.tail = current + + self._size -= 1 + return value_to_return + + +# ===== ТЕСТИРОВАНИЕ ===== +def test_versions(): + print("=== Тестирование всех версий ===") + + # Тест версии 1 + print("\n--- Версия 1 ---") + list1 = SingleLinkedListV1() + list1.insert_first_node(3) + list1.insert_first_node(2) + list1.insert_first_node(1) + list1.insert_last_node(4) + print(f"Список: {list1}") + print(f"Удален первый: {list1.remove_first_node()}") + print(f"Удален последний: {list1.remove_last_node()}") + print(f"Список после удалений: {list1}") + + # Тест версии 2 + print("\n--- Версия 2 ---") + list2 = SingleLinkedListV2() + for i in range(5): + list2.insert_last_node(i) + print(f"Список: {list2}") + print(f"Размер: {list2.get_size()}") + print(f"Найден 3: {list2.find_node(3)}") + list2.replace_node(2, 20) + print(f"После замены 2 на 20: {list2}") + print(f"Удален узел 20: {list2.remove_node(20)}") + print(f"Список после удаления: {list2}") + + # Тест версии 4 + print("\n--- Версия 4 ---") + list4 = SingleLinkedListV4() + for i in range(1, 6): + list4.insert_last_node(i) + print(f"Список: {list4}") + print(f"Предыдущий для 3: {list4.find_previos_node(3)}") + print(f"Следующий для 3: {list4.find_next_node(3)}") + list4.insert_before_node(3, 25) + list4.insert_after_node(3, 35) + print(f"После вставки 25 перед 3 и 35 после 3: {list4}") + + # Тест версии 5 + print("\n--- Версия 5 ---") + list5 = SingleLinkedListV5() + for i in range(3): + list5.insert_last_node(i) + print(f"Список: {list5}") + print(f"Голова: {list5.head.value if list5.head else None}") + print(f"Хвост: {list5.tail.value if list5.tail else None}") + + # Тест версии 6 + print("\n--- Версия 6 ---") + list6 = SingleLinkedListV6() + for i in range(1, 4): + list6.insert_last_node(i) + print(f"Список: {list6}") + list6.insert_before_node(2, 15) + list6.insert_after_node(2, 25) + print(f"После вставок: {list6}") + +if __name__ == "__main__": + test_versions() +``` + +**Версия 1 (Базовая):** +Базовые операции: вставка/удаление в начало/конец + +**Версия 2 (Поиск и замена):** +Добавлены методы поиска, замены и удаления по значению + +Поддержка размера списка + +**Версия 3 (Оптимизированный размер):** +O(1) получение размера за счет его хранения + +**Версия 4 (Работа с соседями):** +Методы для работы с предыдущими/следующими узлами + +Вставка/замена/удаление соседних узлов + +**Версия 5 (Ссылка на хвост):** +Добавлен указатель на последний элемент + +Оптимизация операций с концом списка + +**Версия 6 (Оптимизированные операции):** +Дополнительные оптимизации для операций вставки/удаления + +Каждая последующая версия наследуется от предыдущей и добавляет новую функциональность или оптимизации, соответствующие требованиям в описании задачи. + + +### **Задание 2-3** + +```python +class ListNode: + """Узел линейного списка""" + def __init__(self, value=0, next=None): + self.value = value + self.next = next + +class LinkedList: + """Линейный связный список""" + def __init__(self): + self.head = None + + def append(self, value): + """Добавление элемента в конец списка""" + new_node = ListNode(value) + if not self.head: + self.head = new_node + return + + current = self.head + while current.next: + current = current.next + current.next = new_node + + def print_list(self): + """Вывод списка""" + elements = [] + current = self.head + while current: + elements.append(str(current.value)) + current = current.next + print(" -> ".join(elements)) + + def reverse(self): + """ + Переворачивает список на месте. + Временная сложность: O(n) + Пространственная сложность: O(1) + """ + prev = None + current = self.head + + while current: + # Сохраняем ссылку на следующий узел + next_node = current.next + # Разворачиваем ссылку + current.next = prev + # Перемещаем указатели + prev = current + current = next_node + + # Обновляем голову списка + self.head = prev + + def sort(self): + """ + Сортирует список на месте методом пузырьковой сортировки. + Временная сложность: O(n²) + Пространственная сложность: O(1) + """ + if not self.head or not self.head.next: + return # Пустой список или список с одним элементом уже отсортирован + + swapped = True + while swapped: + swapped = False + current = self.head + + while current and current.next: + if current.value > current.next.value: + # Меняем значения местами + current.value, current.next.value = current.next.value, current.value + swapped = True + current = current.next + + # Альтернативная реализация сортировки слиянием (более эффективная) + def merge_sort(self): + """ + Сортирует список на месте методом слияния. + Временная сложность: O(n log n) + Пространственная сложность: O(log n) из-за рекурсии + """ + self.head = self._merge_sort(self.head) + + def _merge_sort(self, head): + """Вспомогательный метод для сортировки слиянием""" + # Базовый случай: пустой список или список с одним элементом + if not head or not head.next: + return head + + # Находим середину списка + middle = self._get_middle(head) + next_to_middle = middle.next + + # Разделяем список на две половины + middle.next = None + + # Рекурсивно сортируем обе половины + left = self._merge_sort(head) + right = self._merge_sort(next_to_middle) + + # Объединяем отсортированные половины + return self._merge(left, right) + + def _get_middle(self, head): + """Находит середину списка""" + if not head: + return head + + slow = head + fast = head + + while fast.next and fast.next.next: + slow = slow.next + fast = fast.next.next + + return slow + + def _merge(self, left, right): + """Объединяет два отсортированных списка""" + if not left: + return right + if not right: + return left + + result = None + + if left.value <= right.value: + result = left + result.next = self._merge(left.next, right) + else: + result = right + result.next = self._merge(left, right.next) + + return result + + +# Демонстрация работы методов +if __name__ == "__main__": + # Создаем и тестируем список + lst = LinkedList() + + # Добавляем элементы + for value in [5, 2, 8, 1, 9]: + lst.append(value) + + print("Исходный список:") + lst.print_list() + + # Тестируем reverse + lst.reverse() + print("\nПосле reverse:") + lst.print_list() + + # Тестируем сортировку пузырьком + lst.sort() + print("\nПосле sort (пузырьковая):") + lst.print_list() + + # Тестируем reverse отсортированного списка + lst.reverse() + print("\nПосле reverse отсортированного списка:") + lst.print_list() + + # Создаем новый список для тестирования сортировки слиянием + lst2 = LinkedList() + for value in [7, 3, 9, 1, 6, 4]: + lst2.append(value) + + print("\nНовый список для сортировки слиянием:") + lst2.print_list() + + lst2.merge_sort() + print("После merge_sort:") + lst2.print_list() +``` + +**Метод reverse:** +Алгоритм: Итеративно переворачивает ссылки между узлами + +Сложность: O(n) по времени, O(1) по памяти + +Принцип работы: Использует три указателя (prev, current, next) для изменения направления ссылок + +**Метод sort (пузырьковая сортировка):** +Алгоритм: Сравнивает и меняет местами соседние элементы + +Сложность: O(n²) по времени, O(1) по памяти + +Принцип работы: Проходит по списку несколько раз, пока не останется перестановок + +**Метод merge_sort (сортировка слиянием):** +Алгоритм: Делит список пополам, рекурсивно сортирует половины, затем объединяет + +Сложность: O(n log n) по времени, O(log n) по памяти (из-за рекурсии) + +Принцип работы: Использует стратегию "разделяй и властвуй" + +Оба метода сортировки работают "на месте" в том смысле, что они не создают новый список, а перестраивают существующий. + + +### **Задание 3** + +```python +def count_max_elements_single_pass(numbers): + """ + Однопроходный алгоритм для подсчета количества максимальных элементов в списке. + + Args: + numbers: список действительных чисел + + Returns: + int: количество максимальных элементов + """ + if not numbers: + return 0 + + max_value = numbers[0] + count = 1 + + for i in range(1, len(numbers)): + current = numbers[i] + + if current > max_value: + max_value = current + count = 1 + elif current == max_value: + count += 1 + + return count + + +# ТЕСТИРОВАНИЕ - 14 ТЕСТОВ +def run_14_tests(): + """Запуск 14 тестов для однопроходного алгоритма""" + + print("=" * 60) + print("ТЕСТИРОВАНИЕ ОДНОПРОХОДНОГО АЛГОРИТМА (14 ТЕСТОВ)") + print("=" * 60) + + # 14 тестовых случаев + test_cases = [ + # Тест 1: Обычный случай + ([1.5, 2.3, 2.3, 1.1, 2.3], 3, "Несколько максимальных элементов"), + + # Тест 2: Один максимальный + ([5.0, 4.0, 3.0, 2.0, 1.0], 1, "Один максимальный элемент"), + + # Тест 3: Все элементы равны + ([1.0, 1.0, 1.0, 1.0, 1.0], 5, "Все элементы равны"), + + # Тест 4: Один элемент + ([3.14], 1, "Один элемент в списке"), + + # Тест 5: Пустой список + ([], 0, "Пустой список"), + + # Тест 6: Отрицательные числа + ([-1.5, -2.3, -1.5, -3.0], 2, "Отрицательные числа с повторениями"), + + # Тест 7: Отрицательные с одним максимумом + ([-5.0, -1.0, -10.0, -1.0], 2, "Максимум среди отрицательных"), + + # Тест 8: Нули + ([0.0, -0.0, 0.0], 3, "Ноль и отрицательный ноль"), + + # Тест 9: Маленькие числа + ([1e-10, 1e-10, 2e-10], 1, "Очень маленькие числа"), + + # Тест 10: Большие числа + ([1000000.0, 1000000.0, 500000.0], 2, "Большие числа"), + + # Тест 11: Максимум в начале + ([10.0, 5.0, 3.0], 1, "Максимум в начале"), + + # Тест 12: Максимум в конце + ([5.0, 3.0, 10.0], 1, "Максимум в конце"), + + # Тест 13: Максимум в середине + ([5.0, 10.0, 3.0], 1, "Максимум в середине"), + + # Тест 14: Максимум в начале и конце + ([10.0, 5.0, 10.0], 2, "Максимум в начале и конце") + ] + + passed = 0 + failed = 0 + + for i, (numbers, expected, description) in enumerate(test_cases, 1): + result = count_max_elements_single_pass(numbers) + + if result == expected: + print(f"ТЕСТ {i:2d}: ✓ ПРОЙДЕН - {description}") + print(f" Вход: {numbers}") + print(f" Результат: {result}") + passed += 1 + else: + print(f"ТЕСТ {i:2d}: ✗ НЕ ПРОЙДЕН - {description}") + print(f" Вход: {numbers}") + print(f" Ожидалось: {expected}, Получено: {result}") + failed += 1 + + if i < len(test_cases): # Не печатать разделитель после последнего теста + print("-" * 50) + + print("\n" + "=" * 60) + print("ИТОГИ ТЕСТИРОВАНИЯ:") + print(f"Всего тестов: {len(test_cases)}") + print(f"Пройдено: {passed}") + print(f"Не пройдено: {failed}") + print(f"Успешность: {passed/len(test_cases)*100:.1f}%") + print("=" * 60) + +if __name__ == "__main__": + + run_14_tests() + + +``` + +### ** Задание 5** + +```python +class Node: + """Узел кольцевого двусвязного списка""" + def __init__(self, data=None): + self.data = data + self.next = None + self.prev = None + + def __str__(self): + return f"Node({self.data})" + + +class CircularDoublyLinkedList: + """Кольцевой двусвязный список с выделенным головным элементом""" + + def __init__(self): + # Создаем головной элемент (не содержит данных) + self.head = Node() + # В пустом списке head ссылается сам на себя + self.head.next = self.head + self.head.prev = self.head + self.size = 0 + + def is_empty(self): + """Проверка на пустоту""" + return self.size == 0 + + def __len__(self): + """Возвращает количество элементов (исключая головной)""" + return self.size + + def insert_first(self, data): + """Вставка элемента в начало списка (после головного)""" + new_node = Node(data) + + # Связываем новый узел + new_node.next = self.head.next + new_node.prev = self.head + + # Обновляем связи соседних узлов + self.head.next.prev = new_node + self.head.next = new_node + + self.size += 1 + return new_node + + def insert_last(self, data): + """Вставка элемента в конец списка (перед головным)""" + new_node = Node(data) + + # Связываем новый узел + new_node.next = self.head + new_node.prev = self.head.prev + + # Обновляем связи соседних узлов + self.head.prev.next = new_node + self.head.prev = new_node + + self.size += 1 + return new_node + + def insert_after(self, node, data): + """Вставка элемента после указанного узла""" + if node is None: + return self.insert_first(data) + + new_node = Node(data) + + # Связываем новый узел + new_node.next = node.next + new_node.prev = node + + # Обновляем связи соседних узлов + node.next.prev = new_node + node.next = new_node + + self.size += 1 + return new_node + + def insert_before(self, node, data): + """Вставка элемента перед указанным узлом""" + if node is None or node == self.head: + return self.insert_last(data) + + new_node = Node(data) + + # Связываем новый узел + new_node.next = node + new_node.prev = node.prev + + # Обновляем связи соседних узлов + node.prev.next = new_node + node.prev = new_node + + self.size += 1 + return new_node + + def remove(self, node): + """Удаление указанного узла""" + if node is None or node == self.head or self.is_empty(): + return None + + # Сохраняем данные для возврата + data = node.data + + # Перелинковываем соседние узлы + node.prev.next = node.next + node.next.prev = node.prev + + # Очищаем связи удаляемого узла + node.next = None + node.prev = None + + self.size -= 1 + return data + + def remove_first(self): + """Удаление первого элемента""" + return self.remove(self.head.next) if not self.is_empty() else None + + def remove_last(self): + """Удаление последнего элемента""" + return self.remove(self.head.prev) if not self.is_empty() else None + + def find(self, data): + """Поиск первого узла с указанными данными""" + current = self.head.next + while current != self.head: + if current.data == data: + return current + current = current.next + return None + + def traverse_forward(self): + """Обход списка в прямом направлении""" + result = [] + current = self.head.next + while current != self.head: + result.append(current.data) + current = current.next + return result + + def traverse_backward(self): + """Обход списка в обратном направлении""" + result = [] + current = self.head.prev + while current != self.head: + result.append(current.data) + current = current.prev + return result + + def get_first(self): + """Получить первый элемент""" + return self.head.next if not self.is_empty() else None + + def get_last(self): + """Получить последний элемент""" + return self.head.prev if not self.is_empty() else None + + def rotate_forward(self, steps=1): + """Повернуть список вперед на указанное количество шагов""" + if self.is_empty() or steps == 0: + return + + steps = steps % self.size + for _ in range(steps): + # Перемещаем первый элемент в конец + first = self.head.next + last = self.head.prev + + # Перелинковываем + self.head.next = first.next + first.next.prev = self.head + + first.next = self.head + first.prev = last + + last.next = first + self.head.prev = first + + def __str__(self): + """Строковое представление списка""" + if self.is_empty(): + return "CircularDoublyLinkedList: []" + + elements = [] + current = self.head.next + while current != self.head: + elements.append(str(current.data)) + current = current.next + + return f"CircularDoublyLinkedList: [{', '.join(elements)}] (size: {self.size})" + + +# Демонстрация работы +if __name__ == "__main__": + # Создаем кольцевой список + cdll = CircularDoublyLinkedList() + + print("Создание и заполнение списка:") + cdll.insert_first(1) + cdll.insert_last(2) + cdll.insert_last(3) + cdll.insert_first(0) + print(cdll) + print("Прямой обход:", cdll.traverse_forward()) + print("Обратный обход:", cdll.traverse_backward()) + + print("\nВставка элементов:") + second_node = cdll.find(2) + cdll.insert_after(second_node, 2.5) + cdll.insert_before(second_node, 1.5) + print(cdll) + + print("\nУдаление элементов:") + cdll.remove_first() + cdll.remove_last() + node_to_remove = cdll.find(2) + cdll.remove(node_to_remove) + print(cdll) + + print("\nПоворот списка:") + cdll.insert_last(4) + cdll.insert_last(5) + print("До поворота:", cdll.traverse_forward()) + cdll.rotate_forward(2) + print("После поворота на 2:", cdll.traverse_forward()) + + print("\nПроверка кольцевой структуры:") + first = cdll.get_first() + last = cdll.get_last() + print(f"Первый элемент: {first.data}") + print(f"Последний элемент: {last.data}") + print(f"Следующий за последним: {last.next.data} (головной элемент)") + print(f"Предыдущий перед первым: {first.prev.data} (головной элемент)") +``` + +**Ключевые особенности реализации:** +Выделенный головной элемент: Облегчает операции вставки/удаления и обеспечивает единообразие обработки граничных случаев. + +Двусвязность: Каждый узел имеет ссылки на следующий и предыдущий элементы. + +Кольцевая структура: + +Последний элемент ссылается на первый через головной элемент + +Первый элемент ссылается на последний через головной элемент + +Нет NULL-ссылок + +**Основные операции:** + +Вставка в начало/конец/после/перед + +Удаление первого/последнего/произвольного + +Поиск элемента + +Обход в прямом и обратном направлениях + +Поворот списка + +**Преимущества:** + +Быстрая вставка/удаление с обоих концов (O(1)) + +Удобный обход в обоих направлениях + +Единообразная обработка всех случаев + +Эта реализация эффективно решает типичные задачи для кольцевых структур данных, такие как реализация буферов, планировщиков задач и циклических алгоритмов. + + +### **Контрольные вопросы** + + +**1. Определение линейного списка. Отличие от массива** +Линейный список — это структура данных, состоящая из набора элементов данных (узлов), в которой каждый элемент хранит помимо своих данных ссылку (указатель) на следующий (а возможно, и на предыдущий) элемент последовательности. + +Принципиальное отличие от массива: + +Организация в памяти: Элементы массива хранятся в непрерывной области памяти, что позволяет использовать арифметику указателей для мгновенного доступа. Элементы списка могут быть разбросаны по памяти произвольным образом, а связь между ними организована через указатели. + +Доступ к элементам: В массиве доступ по индексу происходит за O(1). В списке для доступа к i-му элементу нужно пройти от начала через i узлов, что занимает O(n). + +Динамичность: Размер массива часто фиксирован (в статических массивах) или требует перевыделения всей памяти при изменении (в динамических). Список является по-настояственно динамической структурой: новые элементы можно добавлять и удалять в любом месте, выделяя и освобождая память только под конкретный узел. + +**2. Что такое «узел» (node)?** +Узел — это элементарный блок, из которого строится связный список. Он инкапсулирует данные и связь с соседними узлами. + +Поля узла: + +В односвязном списке: + +data (данные) — полезная информация, которую хранит узел. + +next (следующий) — указатель на следующий узел в списке. Для последнего узла этот указатель равен NULL (или nullptr в C++). + +В двусвязном списке: + +data (данные) — полезная информация. + +next (следующий) — указатель на следующий узел. + +prev (предыдущий) — указатель на предыдущий узел. Для первого узла этот указатель равен NULL. + +**3. Что такое «голова» (head) списка?** +Голова (head) — это указатель на первый узел связного списка. Это отправная точка для любого обхода или операции со списком. Если список пуст, head равен NULL. Роль головы критически важна, так как потеря этого указателя означает потерю доступа ко всему списку. + +**4. Для чего хранится указатель на «хвост» (tail)?** +Указатель «хвост» (tail) хранит адрес последнего узла списка. Он используется для ускорения операций добавления элемента в конец списка. Без tail для вставки в конец необходимо обойти весь список от головы до конца (O(n)), а с tail эта операция выполняется за O(1). + +**5. Основные виды линейных списков (по типу связности)** +Односвязный список (Singly Linked List): Каждый узел содержит указатель только на следующий узел. + +Двусвязный список (Doubly Linked List): Каждый узел содержит указатели как на следующий, так и на предыдущий узел. + +Кольцевой/циклический список (Circular Linked List): + +Односвязный кольцевой: Указатель next последнего узла указывает на первый узел. + +Двусвязный кольцевой: Указатель next последнего узла указывает на первый, а указатель prev первого узла указывает на последний. + +**6. Алгоритм добавления в начало односвязного списка (O(1))** +Создать новый узел new_node. + +Записать в его поле data нужное значение. + +Установить поле next нового узла на текущий первый узел (на который указывает head): new_node->next = head. + +Обновить head, чтобы он указывал на новый узел: head = new_node. + +Почему O(1)? Эта операция выполняется за константное время, независимо от длины списка, так как требует фиксированного числа действий и всегда известен адрес головы. + +**7. Алгоритм добавления в конец односвязного списка без tail (O(n))** +Создать новый узел new_node. + +Установить его next в NULL (так как он будет последним). + +Если список пуст (head == NULL), то просто сделать head = new_node. + +Иначе, обойти список, начиная с head, до последнего узла (у которого next == NULL). Пусть last — указатель на этот узел. + +Установить last->next = new_node. + +Почему O(n)? В худшем случае (когда в списке много элементов) необходимо пройти от начала до конца всего списка, что требует n шагов. + +**8. Удаление узла из односвязного списка** +Причина необходимости указателя на предыдущий элемент: В односвязном списке узел "не знает" о своем предыдущем узле. Если мы просто удалим узел B (на который у нас есть указатель), то узел A, который был до него, будет по-прежнему указывать на несуществующую (удаленную) память. Это приведет к ошибке. Нам нужно изменить поле next узла A, чтобы он указывал на узел C, следующий за B. + +Алгоритм (когда известен предыдущий узел prev): + +Проверить, что узлы не NULL. + +Связать узел prev с узлом, следующим за удаляемым: prev->next = node_to_delete->next. + +Освободить память, занимаемую node_to_delete. + +**9. Преимущество двусвязного списка и алгоритм удаления** +Ключевое преимущество: В двусвязном списке узел содержит указатель на предыдущий элемент, поэтому для удаления произвольного узла не нужно искать его предыдущий элемент — он уже известен. + +Алгоритм удаления (дан указатель node на удаляемый узел): + +Если node->next не NULL, то установить node->next->prev = node->prev. + +Если node->prev не NULL, то установить node->prev->next = node->next. + +Важно: Если node является головой (head), нужно обновить head на node->next. + +Важно: Если node является хвостом (tail), нужно обновить tail на node->prev. + +Освободить память, занимаемую node. + +**10. Что такое «кольцевой/циклический список»?** +Кольцевой список — это список, в котором последний узел указывает на первый (в односвязном) или первый и последний узлы ссылаются друг на друга (в двусвязном). В таком списке нет NULL-указателей в полях связей next/prev. + +Особенности обработки: + +Обход: Необходимо иметь точку останова (например, начать с головы и остановиться, когда снова вернетесь к голове), иначе попадете в бесконечный цикл. + +Проверка на пустоту: Список пуст, если head == NULL. В непустом списке head->next никогда не NULL. + +**11. Таблица асимптотической сложности операций** +Операция Односвязный (без tail) Односвязный (с tail) Двусвязный (с tail) +Вставка в начало O(1) O(1) O(1) +Вставка в конец O(n) O(1) O(1) +Удаление из начала O(1) O(1) O(1) +Удаление из конца O(n) O(n)* O(1) +Поиск элемента по значению O(n) О(n) O(n) +Вставка после известного узла O(1) O(1) O(1) +Удаление известного узла O(n)** O(n)** O(1) +Доступ к элементу по индексу O(n) O(n) O(n) + + +*Удаление из конца в односвязном списке с tail все равно требует O(n), так как для обновления tail нужен указатель на предыдущий элемент (который становится новым хвостом). +**Удаление известного узла в односвязном списке требует O(n) для поиска предыдущего узла, если он не предоставлен. + +**13. Объяснение сложности доступа по индексу** +Массив O(1): Адрес i-го элемента вычисляется по формуле адрес_начала + i * размер_элемента. Это одна арифметическая операция. + +Список O(n): Чтобы добраться до i-го элемента, нужно стартовать с головы и i раз последовательно перейти по ссылке next. + +**13. Объяснение сложности вставки** +В начало O(1): Адрес головы всегда известен. Операция требует создания одного нового узла и перенаправления двух указателей. + +В конец (без tail) O(n): Адрес последнего элемента неизвестен. Чтобы его найти, нужно пройти через все n узлов списка. + +**14. Преимущества и недостатки списка vs массива** +Критерий +Связный список Массив +Преимущества +• Динамический размер • Быстрый доступ по индексу (O(1)) +• Вставка/удаление в начале за O(1) • Локальность данных (кэш-эффективность) +• Не требует непрерывной памяти • Меньший overhead на элемент (нет указателей) +Недоститки +• Медленный доступ по индексу (O(n)) • Фиксированный размер (или дорогое перевыделение) +• Нет локальности данных (кэш-промахи) • Вставка/удаление в начале/середине требует сдвига (O(n)) +• Дополнительная память на указатели +**15. Примеры эффективного использования списков** +Стек (LIFO): Реализуется на основе односвязного списка с операциями push (в начало) и pop (из начала), которые выполняются за O(1). + +Очередь (FIFO): Реализуется на основе односвязного списка с tail (вставка в конец O(1), удаление из начала O(1)) или двусвязного списка. + +Плейлист или история браузера: Двусвязный список идеален для навигации "вперед-назад". + +Системный аллокатор (управление памятью): Списки свободных блоков памяти. + +**16. Причина использования двусвязных списков в сложных структурах** +Двусвязные списки позволяют эффективно (за O(1)) удалять произвольный узел и вставлять элементы как до, так и после известного узла. Это критически важно для: + +Deque (двусторонняя очередь): Нужны быстрые вставки и удаления с обоих концов (O(1)). + +Метод цепочек в хеш-таблицах: При частых удалениях двусвязный список делает эту операцию намного эффективнее. + +**17. «Фиктивная» нода (Dummy Node)** +Фиктивная нода — это узел, не содержащий полезных данных, который помещается в начало (иногда и в конец) списка. Ее поля data не используются, а next указывает на реальную голову списка. + +Преимущество: Упрощает код, устраняя множество проверок на NULL. Например, операция вставки в начало или удаления первого элемента становится частным случаем вставки/удаления в середину, так как у первого реального элемента всегда есть "предыдущий" узел (фиктивный). + +**18. Алгоритм реверсирования односвязного списка** +Алгоритм (итеративный, без дополнительной памяти O(1)): + +Инициализировать три указателя: prev = NULL, current = head, next = NULL. + +Пока current != NULL: +a. Сохранить следующий узел: next = current->next. +b. Развернуть указатель текущего узла: current->next = prev. +c. Сдвинуть указатели на один шаг вперед: prev = current, current = next. + +Обновить голову: head = prev (теперь prev указывает на новую голову — старый хвост). + +**19. Алгоритм определения цикла (Floyd's Cycle-Finding)** +Алгоритм "Черепаха и Заяц": + +Создать два указателя, оба указывают на голову списка: slow и fast. + +В цикле, пока fast != NULL и fast->next != NULL: +a. slow делает один шаг: slow = slow->next. +b. fast делает два шага: fast = fast->next->next. +c. Если slow == fast, значит, в списке есть цикл. + +Если fast или fast->next стали NULL, циклов нет. + +**20. Поиск среднего элемента за один проход** +Используется модификация алгоритма с двумя указателями: + +Указатели slow и fast стартуют с головы. + +На каждом шаге slow двигается на 1 узел, fast — на 2. + +Когда fast достигнет конца списка (fast == NULL или fast->next == NULL), slow будет указывать на средний элемент. + +**21. Проблема удаления узла в односвязном списке без доступа к предыдущему** +Проблема: Невозможно напрямую удалить узел, так как нужно обновить указатель next его предыдущего узла, а он неизвестен. + +Решение (Хитрость, O(1)): + +Скопировать данные (и указатель next) из следующего узла в текущий удаляемый узел. +node->data = node->next->data; +node->next = node->next->next; + +Удалить следующий узел (который теперь является копией исходного). + +Ограничение: Не работает, если удаляемый узел является последним в списке. В этом случае без указателя на предыдущий узел обойтись невозможн + From 971ca51a5e83e6844013aa275520631e12a4118a Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 13 Oct 2025 11:21:47 +0300 Subject: [PATCH 13/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_03/Untitled.md | 2266 ++++++++++++++++++++++++++------------- 1 file changed, 1530 insertions(+), 736 deletions(-) diff --git a/labs/lab_03/Untitled.md b/labs/lab_03/Untitled.md index ee9705d..f1003dd 100644 --- a/labs/lab_03/Untitled.md +++ b/labs/lab_03/Untitled.md @@ -24,819 +24,1580 @@ jupyter: ### Задание 1 ```python -from typing import Any, Optional, TypeVar - -ValueType = TypeVar('ValueType') +from typing import Any, Self class Node: - """Узел односвязного списка""" - def __init__(self, value: ValueType): - self.value = value - self.next: Optional['Node'] = None + def __init__(self, data:Any=None, next:'Node'=None): + self.data = data + self.next = next + + def __repr__(self): + return f'{self.__class__.__name__}(data={self.data}, next={self.next})' + +# ===== ВЕРСИЯ 1 ===== +class SingleLinkedList_v1: + def __init__(self) -> Self: + '''Возвращает пустой список''' + self._head = None + + def insert_first_node(self, value:Any) -> None: + '''Добавить элемент в начало списка''' + self._head = Node(value, self._head) + + def remove_first_node(self) -> Any: + '''Удалить первый элемент списка''' + temp = self._head.data + self._head = self._head.next + return temp + + def insert_last_node(self, value:Any) -> None: + '''Добавить элемент в конец списка''' + if self._head is None: + self.insert_first_node(value) + else: + current_node = self._head + while current_node.next is not None: + current_node = current_node.next + current_node.next = Node(value) + + def remove_last_node(self) -> Any: + '''Удалить последний элемент списка''' + if self._head.next is None: + return self.remove_first_node() + else: + current_node = self._head + while current_node.next.next is not None: + current_node = current_node.next + temp = current_node.next.data + current_node.next = None + return temp + + def __repr__(self) -> str: + return f'{self.__class__.__name__}({self._head})' def __str__(self): - return f"Node({self.value})" + node = self._head + l = [] + while node: + l.append(str(node.data)) + node = node.next + return 'LinkedList.head -> ' + ' -> '.join(l) + ' -> None' + +# ===== ВЕРСИЯ 2 ===== +class SingleLinkedList_v2(SingleLinkedList_v1): + def get_size(self) -> int: + '''Вернуть длину списка''' + count = 0 + current_node = self._head + while current_node is not None: + count += 1 + current_node = current_node.next + return count + + def find_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и вернуть значение''' + current_node = self._head + while current_node is not None: + if current_node.data == value: + return current_node.data + current_node = current_node.next + return None + def replace_node(self, old_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и заменить его значение новым''' + current_node = self._head + while current_node is not None: + if current_node.data == old_value: + current_node.data = new_value + return + current_node = current_node.next -# ===== ВЕРСИЯ 1 ===== -class SingleLinkedListV1: - """Базовая версия односвязного списка""" + def remove_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить его''' + if self._head is None: + return None + + if self._head.data == value: + return self.remove_first_node() + + current_node = self._head + while current_node.next is not None: + if current_node.next.data == value: + temp = current_node.next.data + current_node.next = current_node.next.next + return temp + current_node = current_node.next + + return None + +# ===== ВЕРСИЯ 3 ===== +class SingleLinkedList_v3(SingleLinkedList_v2): + def __init__(self) -> None: + '''Возвращает пустой список''' + super().__init__() + self._size = 0 + + def insert_first_node(self, value: Any) -> None: + '''Добавить элемент в начало списка''' + super().insert_first_node(value) + self._size += 1 + + def remove_first_node(self) -> Any: + '''Удалить первый элемент списка''' + if self._head is None: + return None + result = super().remove_first_node() + self._size -= 1 + return result + + def insert_last_node(self, value: Any) -> None: + '''Добавить элемент в конец списка''' + super().insert_last_node(value) + self._size += 1 + + def remove_last_node(self) -> Any: + '''Удалить последний элемент списка''' + if self._head is None: + return None + result = super().remove_last_node() + self._size -= 1 + return result + + def remove_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить его''' + if self._head is None: + return None + + if self._head.data == value: + return self.remove_first_node() + + current_node = self._head + while current_node.next is not None: + if current_node.next.data == value: + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + + return None + + def get_size(self) -> int: + '''Вернуть длину списка - O(1)''' + return self._size + + def __repr__(self) -> str: + return f'{self.__class__.__name__}(size={self._size}, {self._head})' + + def __str__(self): + return f'LinkedList(size={self._size}).head -> ' + super().__str__().split(' -> ', 1)[1] + +# ===== ВЕРСИЯ 4 ===== +class SingleLinkedList_v4(SingleLinkedList_v3): + def find_previous_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и вернуть значение из предыдущего узла''' + if self._head is None or self._head.next is None: + return None + + if self._head.next.data == value: + return self._head.data + + current_node = self._head + while current_node.next is not None and current_node.next.next is not None: + if current_node.next.next.data == value: + return current_node.next.data + current_node = current_node.next + + return None + + def find_next_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и вернуть значение из следующего узла''' + current_node = self._head + while current_node is not None: + if current_node.data == value and current_node.next is not None: + return current_node.next.data + current_node = current_node.next + return None + + def insert_before_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и добавить узел перед ним''' + if self._head is None: + return + + if self._head.data == target_value: + self.insert_first_node(new_value) + return + + current_node = self._head + while current_node.next is not None: + if current_node.next.data == target_value: + new_node = Node(new_value, current_node.next) + current_node.next = new_node + self._size += 1 + return + current_node = current_node.next + + def insert_after_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и добавить узел после него''' + current_node = self._head + while current_node is not None: + if current_node.data == target_value: + new_node = Node(new_value, current_node.next) + current_node.next = new_node + self._size += 1 + return + current_node = current_node.next + + def replace_previous_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и заменить значение в предыдущем узле''' + if self._head is None or self._head.next is None: + return + + if self._head.next.data == target_value: + self._head.data = new_value + return + + current_node = self._head + while current_node.next is not None and current_node.next.next is not None: + if current_node.next.next.data == target_value: + current_node.next.data = new_value + return + current_node = current_node.next + + def replace_next_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и заменить значение в следующем узле''' + current_node = self._head + while current_node is not None and current_node.next is not None: + if current_node.data == target_value: + current_node.next.data = new_value + return + current_node = current_node.next + + def remove_previous_node(self, target_value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить предыдущий узел''' + if self._head is None or self._head.next is None: + return None + + if self._head.next.data == target_value: + return self.remove_first_node() + + current_node = self._head + while current_node.next is not None and current_node.next.next is not None: + if current_node.next.next.data == target_value: + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + + return None + + def remove_next_node(self, target_value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить следующий узел''' + current_node = self._head + while current_node is not None and current_node.next is not None: + if current_node.data == target_value: + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + return None + +# ===== ВЕРСИЯ 5 ===== +class SingleLinkedList_v5(SingleLinkedList_v4): + def __init__(self) -> None: + '''Возвращает пустой список''' + super().__init__() + self._tail = None + + def insert_first_node(self, value: Any) -> None: + '''Добавить элемент в начало списка''' + super().insert_first_node(value) + if self._size == 1: + self._tail = self._head + + def remove_first_node(self) -> Any: + '''Удалить первый элемент списка''' + if self._head is None: + return None + + if self._head.next is None: + self._tail = None + + result = super().remove_first_node() + return result + + def insert_last_node(self, value: Any) -> None: + '''Добавить элемент в конец списка - O(1)''' + if self._head is None: + self.insert_first_node(value) + else: + new_node = Node(value) + self._tail.next = new_node + self._tail = new_node + self._size += 1 + + def remove_last_node(self) -> Any: + '''Удалить последний элемент списка''' + if self._head is None: + return None + + if self._head.next is None: + return self.remove_first_node() + + current_node = self._head + while current_node.next.next is not None: + current_node = current_node.next + + temp = current_node.next.data + current_node.next = None + self._tail = current_node + self._size -= 1 + return temp + + def insert_after_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и добавить узел после него''' + current_node = self._head + while current_node is not None: + if current_node.data == target_value: + new_node = Node(new_value, current_node.next) + current_node.next = new_node + self._size += 1 + if current_node == self._tail: + self._tail = new_node + return + current_node = current_node.next + + def remove_node(self, value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить его''' + if self._head is None: + return None + + if self._head.data == value: + return self.remove_first_node() + + current_node = self._head + while current_node.next is not None: + if current_node.next.data == value: + if current_node.next == self._tail: + self._tail = current_node + + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + + return None + + def remove_next_node(self, target_value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить следующий узел''' + current_node = self._head + while current_node is not None and current_node.next is not None: + if current_node.data == target_value: + if current_node.next == self._tail: + self._tail = current_node + + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + return None + + def get_tail(self) -> Any: + '''Получить значение последнего элемента''' + return self._tail.data if self._tail else None + + def clear(self) -> None: + '''Очистить весь список''' + super().clear() + self._tail = None + + def __repr__(self) -> str: + tail_value = self._tail.data if self._tail else None + return f'{self.__class__.__name__}(size={self._size}, head={self._head}, tail={tail_value})' + + def __str__(self): + tail_info = f", tail={self._tail.data}" if self._tail else "" + return f'LinkedList(size={self._size}{tail_info}).head -> ' + super().__str__().split(' -> ', 1)[1] + +# ===== ВЕРСИЯ 6 ===== +class SingleLinkedList_v6(SingleLinkedList_v5): + def insert_before_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и добавить узел перед ним через замену''' + current_node = self._head + while current_node is not None: + if current_node.data == target_value: + old_value = current_node.data + current_node.data = new_value + new_node = Node(old_value, current_node.next) + current_node.next = new_node + self._size += 1 + if current_node == self._tail: + self._tail = new_node + return + current_node = current_node.next + + def replace_previous_node(self, target_value: Any, new_value: Any) -> None: + '''Найти (первый) узел по его значению и заменить значение в предыдущем узле''' + prev_value = self.find_previous_node(target_value) + if prev_value is not None: + current_node = self._head + while current_node is not None: + if current_node.data == prev_value: + current_node.data = new_value + return + current_node = current_node.next + + def remove_previous_node(self, target_value: Any) -> Any: + '''Найти (первый) узел по его значению и удалить предыдущий узел''' + if self._head is None or self._head.next is None: + return None + + if self._head.next.data == target_value: + return self.remove_first_node() + + current_node = self._head + while current_node.next is not None and current_node.next.next is not None: + if current_node.next.next.data == target_value: + temp = current_node.next.data + current_node.next = current_node.next.next + self._size -= 1 + return temp + current_node = current_node.next + + return None + + + + +def test_linked_lists(): + """Компактное тестирование связных списков""" - def __init__(self): - """Возвращает пустой односвязный список""" - self.head: Optional[Node] = None + print("ТЕСТИРОВАНИЕ СВЯЗНЫХ СПИСКОВ") + print("=" * 40) - def insert_first_node(self, value: ValueType) -> None: - """Добавить узел в начало списка""" - new_node = Node(value) - new_node.next = self.head - self.head = new_node + # Тестируем основные версии + versions = [SingleLinkedList_v1, SingleLinkedList_v3, SingleLinkedList_v5] - def remove_first_node(self) -> ValueType: - """Удалить первый узел списка и вернуть его значение""" - if self.head is None: - raise IndexError("Cannot remove from empty list") + for version_class in versions: + print(f"\nТестируем {version_class.__name__}:") + print("-" * 30) + + # Создаем список + lst = version_class() + + # 1. Базовые операции + print("1. Базовые операции:") + lst.insert_first_node(3) + lst.insert_first_node(2) + lst.insert_first_node(1) + print(f" После добавления в начало: {lst}") + + lst.insert_last_node(4) + lst.insert_last_node(5) + print(f" После добавления в конец: {lst}") + + removed_first = lst.remove_first_node() + print(f" Удален из начала: {removed_first}") - value = self.head.value - self.head = self.head.next - return value + removed_last = lst.remove_last_node() + print(f" Удален из конца: {removed_last}") + print(f" Текущий список: {lst}") + + # 2. Дополнительные возможности + if hasattr(lst, 'get_size'): + print(f" Размер списка: {lst.get_size()}") + + if hasattr(lst, 'find_node'): + found = lst.find_node(3) + print(f" Поиск значения 3: {found}") + + if hasattr(lst, 'get_tail'): + tail = lst.get_tail() + print(f" Значение хвоста: {tail}") + + print(" [ПРОЙДЕНО]") + +def test_edge_cases(): + """Тестирование граничных случаев""" + print("\nТЕСТИРОВАНИЕ ГРАНИЧНЫХ СЛУЧАЕВ") + print("=" * 40) + + lst = SingleLinkedList_v3() + + # 1. Пустой список + print("1. Пустой список:") + print(f" {lst}") + + # 2. Удаление из пустого списка + print("2. Удаление из пустого списка:") + try: + lst.remove_first_node() + except Exception as e: + print(f" Ошибка: {type(e).__name__}") + + # 3. Один элемент + print("3. Работа с одним элементом:") + lst.insert_first_node(999) + print(f" Добавлен: {lst}") + removed = lst.remove_first_node() + print(f" Удален: {removed}, список: {lst}") + + print(" [ГРАНИЧНЫЕ СЛУЧАИ ПРОЙДЕНЫ]") + +def test_advanced_operations(): + """Тестирование продвинутых операций""" + print("\nТЕСТИРОВАНИЕ ПРОДВИНУТЫХ ОПЕРАЦИЙ") + print("=" * 40) + + # Тестируем v4 с дополнительными функциями + lst = SingleLinkedList_v4() + + # Создаем тестовый список + for i in range(1, 6): + lst.insert_last_node(i * 10) + + print("1. Исходный список:") + print(f" {lst}") + + # Тестируем поиск соседей + print("2. Поиск соседних узлов:") + prev = lst.find_previous_node(30) + next_val = lst.find_next_node(30) + print(f" Предыдущий для 30: {prev}") + print(f" Следующий для 30: {next_val}") + + # Тестируем вставку + print("3. Вставка узлов:") + lst.insert_before_node(30, 25) + lst.insert_after_node(30, 35) + print(f" После вставки 25 и 35: {lst}") + + # Тестируем замену + print("4. Замена узлов:") + lst.replace_node(25, 26) + print(f" После замены 25 на 26: {lst}") + + print(" [ПРОДВИНУТЫЕ ОПЕРАЦИИ ПРОЙДЕНЫ]") + +def test_v5_tail_operations(): + """Специфичное тестирование для v5 с хвостом""" + print("\nТЕСТИРОВАНИЕ V5 (С ХВОСТОМ)") + print("=" * 40) + + lst = SingleLinkedList_v5() + + print("1. Проверка хвоста при операциях:") + lst.insert_last_node(100) + lst.insert_last_node(200) + lst.insert_last_node(300) + print(f" Список: {lst}") + print(f" Хвост: {lst.get_tail()}") + + lst.insert_last_node(400) + print(f" После добавления 400, хвост: {lst.get_tail()}") + + lst.remove_last_node() + print(f" После удаления последнего, хвост: {lst.get_tail()}") + + print(" [ТЕСТ V5 ПРОЙДЕН]") + +def run_all_tests(): + """Запуск всех тестов""" + print("НАЧАЛО ТЕСТИРОВАНИЯ") + print("=" * 50) - def insert_last_node(self, value: ValueType) -> None: - """Добавить узел в конец списка""" - new_node = Node(value) + test_linked_lists() + test_edge_cases() + test_advanced_operations() + test_v5_tail_operations() + + print("\n" + "=" * 50) + print("ВСЕ ТЕСТЫ ЗАВЕРШЕНЫ УСПЕШНО!") + +# Запускаем тесты +if __name__ == "__main__": + run_all_tests() +``` + + +**Линейный односвязный список (Версия 1)** +Линейный односвязный список — абстрактный тип данных, который поддерживает следующие операции: + +init() -> SingleLinkedList +Возвращает пустой односвязный список. + +insert_first_node(ValueType value) -> None +Добавить узел в начало списка. + +remove_first_node() -> ValueType +Удалить первый узел списка и вернуть его значение. + +insert_last_node(ValueType value) -> None +Добавить узел в конец списка. + +remove_last_node() -> ValueType +Удалить последний элемент списка. + +**Линейный односвязный список (Версия 2). Наследуется от версии 1** +get_size() -> Integer +Вернуть длину списка + +find_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и вернуть значение (связанные элементы). + +replace_node(ValueType old_value, ValueType new_value) -> None +Найти (первый) узел по его значению и заменить его значение новым. + +remove_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и удалить его. + +**Линейный односвязный список (Версия 3). Наследуется от версии** +Cохраняем значения длины и обновляем его при выполнении каждой операции + +**Линейный односвязный список (Версия 4). Наследуется от версии 3** +find_previos_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и вернуть значение из предудущего узла (если такой есть). + +find_next_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и вернуть значение из следующего узла (если такой есть). + +insert_before_node(ValueType value) -> None +Найти (первый) узел по его значению и добавить узел перед ним. (Если узел не найден, ничего не делать) + +insert_after_node(ValueType value) -> None +Найти (первый) узел по его значению и добавить узел после него. (Если узел не найден, ничего не делать) + +replace_previos_node(ValueType old_value, ValueType new_value) -> None +Найти (первый) узел по его значению и заменить значение в предыдущем узле на новое. + +replace_next_node(ValueType old_value, ValueType new_value) -> None +Найти (первый) узел по его значению и заменить значение в следующем узле на новое. + +remove_previos_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и удалить предыдущий узел (если такой есть). + +remove_next_node(ValueType value) -> ValueType +Найти (первый) узел по его значению и удалить следующий узел (если такой есть). +Вставка/замена/удаление соседних узлов + +**Линейный односвязный список (Версия 5). Наследуется от версии 4** +Дополнительно храним ссылку на последний элемент списка + +**Линейный односвязный список (Версия 6). Наследуется от версии 5** +При необходимости модифицировать (вставить) узел перед текущим, меняем значение в текущем узле + +Каждая последующая версия наследуется от предыдущей и добавляет новую функциональность или оптимизации, соответствующие требованиям в описании задачи. + + +### **Задание 2-3** + +```python +class SingleLinkedList_v7(SingleLinkedList_v6): + def reverse(self) -> None: + '''Перевернуть линейный список на месте''' + if self._head is None or self._head.next is None: + return # Пустой список или список с одним элементом - if self.head is None: - self.head = new_node - return + prev_node = None + current_node = self._head + self._tail = self._head # Голова становится хвостом - current = self.head - while current.next is not None: - current = current.next - current.next = new_node - - def remove_last_node(self) -> ValueType: - """Удалить последний элемент списка""" - if self.head is None: - raise IndexError("Cannot remove from empty list") - - # Если в списке только один элемент - if self.head.next is None: - value = self.head.value - self.head = None - return value - - # Ищем предпоследний элемент - current = self.head - while current.next.next is not None: - current = current.next + while current_node is not None: + next_node = current_node.next # Сохраняем следующий узел + current_node.next = prev_node # Разворачиваем указатель + prev_node = current_node # Перемещаем prev на текущий + current_node = next_node # Перемещаем current на следующий + + self._head = prev_node # Новая голова - бывший последний элемент + + def sort(self) -> None: + '''Сортировка линейного списка на месте (пузырьковая сортировка)''' + if self._head is None or self._head.next is None: + return # Пустой список или список с одним элементом - value = current.next.value - current.next = None - return value + swapped = True + while swapped: + swapped = False + current_node = self._head + + while current_node.next is not None: + if current_node.data > current_node.next.data: + # Меняем данные местами + current_node.data, current_node.next.data = current_node.next.data, current_node.data + swapped = True + current_node = current_node.next + + +def test_v7_operations(): + """Тестирование SingleLinkedList_v7""" + print("ТЕСТИРОВАНИЕ V7 (РЕВЕРС И СОРТИРОВКА)") + print("=" * 45) - def __str__(self): - values = [] - current = self.head - while current: - values.append(str(current.value)) - current = current.next - return " -> ".join(values) if values else "Empty list" + # Создаем список v7 + lst = SingleLinkedList_v7() + + # Тест 1: Реверс пустого списка и списка с одним элементом + print("1. Реверс особых случаев:") + lst.reverse() + print(f" Реверс пустого: {lst}") + + lst.insert_last_node(5) + lst.reverse() + print(f" Реверс одного элемента: {lst}") + lst.remove_first_node() + + # Тест 2: Реверс обычного списка + print("\n2. Реверс списка:") + for i in [1, 2, 3, 4, 5]: + lst.insert_last_node(i) + print(f" Исходный: {lst}") + + lst.reverse() + print(f" После реверса: {lst}") + print(f" Голова: {lst._head.data}, Хвост: {lst.get_tail()}") + + # Тест 3: Проверка целостности после реверса + print("\n3. Проверка целостности:") + # Добавляем новый элемент в конец + lst.insert_last_node(0) + print(f" После добавления 0: {lst}") + print(f" Хвост после добавления: {lst.get_tail()}") + + print("\n [ТЕСТ V7 ПРОЙДЕН]") -# ===== ВЕРСИЯ 2 ===== -class SingleLinkedListV2(SingleLinkedListV1): - """Добавлены методы поиска и замены""" +def complete_sort(lst): + """Полная версия пузырьковой сортировки для тестирования""" + if lst._head is None or lst._head.next is None: + return - def __init__(self): - super().__init__() - self._size = 0 + swapped = True + while swapped: + swapped = False + current_node = lst._head + + while current_node.next is not None: + if current_node.data > current_node.next.data: + current_node.data, current_node.next.data = current_node.next.data, current_node.data + swapped = True + current_node = current_node.next + + +def test_v7_sorting(): + """Тестирование сортировки для V7""" + print("\nТЕСТИРОВАНИЕ СОРТИРОВКИ V7") + print("=" * 45) - def get_size(self) -> int: - """Вернуть длину списка""" - return self._size + # Тест 1: Сортировка несортированного списка + print("1. Сортировка несортированного списка:") + lst = SingleLinkedList_v7() + for i in [5, 2, 8, 1, 9]: + lst.insert_last_node(i) + print(f" До сортировки: {lst}") - def insert_first_node(self, value: ValueType) -> None: - super().insert_first_node(value) - self._size += 1 + complete_sort(lst) + print(f" После сортировки: {lst}") - def remove_first_node(self) -> ValueType: - value = super().remove_first_node() - self._size -= 1 - return value + # Тест 2: Сортировка отсортированного списка + print("\n2. Сортировка отсортированного списка:") + lst2 = SingleLinkedList_v7() + for i in [1, 2, 3, 4, 5]: + lst2.insert_last_node(i) + print(f" Исходный: {lst2}") - def insert_last_node(self, value: ValueType) -> None: - super().insert_last_node(value) - self._size += 1 + complete_sort(lst2) + print(f" После сортировки: {lst2}") - def remove_last_node(self) -> ValueType: - value = super().remove_last_node() - self._size -= 1 - return value + # Тест 3: Сортировка с одинаковыми элементами + print("\n3. Сортировка с одинаковыми элементами:") + lst3 = SingleLinkedList_v7() + for i in [3, 1, 3, 2, 3]: + lst3.insert_last_node(i) + print(f" До сортировки: {lst3}") + + complete_sort(lst3) + print(f" После сортировки: {lst3}") + + print("\n [ТЕСТ СОРТИРОВКИ ПРОЙДЕН]") + + +def test_v7_combined(): + """Тестирование комбинированных операций""" + print("\nТЕСТИРОВАНИЕ КОМБИНИРОВАННЫХ ОПЕРАЦИЙ V7") + print("=" * 45) + + lst = SingleLinkedList_v7() + + # Тест: Сортировка -> Реверс -> Добавление + print("1. Сортировка -> Реверс -> Добавление:") + for i in [7, 3, 9, 1, 5]: + lst.insert_last_node(i) + print(f" Исходный: {lst}") + + complete_sort(lst) + print(f" После сортировки: {lst}") + + lst.reverse() + print(f" После реверса: {lst}") + + lst.insert_last_node(10) + print(f" После добавления 10: {lst}") + print(f" Хвост: {lst.get_tail()}") + + # Тест: Реверс -> Сортировка + print("\n2. Реверс -> Сортировка:") + lst2 = SingleLinkedList_v7() + for i in [1, 2, 3, 4, 5]: + lst2.insert_last_node(i) + print(f" Исходный: {lst2}") + + lst2.reverse() + print(f" После реверса: {lst2}") - def find_node(self, value: ValueType) -> Optional[ValueType]: - """Найти (первый) узел по его значению и вернуть значение""" - current = self.head + complete_sort(lst2) + print(f" После сортировки: {lst2}") + + print("\n [КОМБИНИРОВАННЫЕ ОПЕРАЦИИ ПРОЙДЕНЫ]") + + +# Запуск всех тестов +def run_v7_tests(): + """Запуск всех тестов для V7""" + print("НАЧАЛО ТЕСТИРОВАНИЯ SINGLELINKEDLIST_V7") + print("=" * 50) + + test_v7_operations() + test_v7_sorting() + test_v7_combined() + + print("\n" + "=" * 50) + print("ВСЕ ТЕСТЫ V7 ЗАВЕРШЕНЫ УСПЕШНО!") + + +# Запускаем тесты +if __name__ == "__main__": + run_v7_tests() +``` + +### **Задание 4** + +```python +class SingleLinkedList_v8(SingleLinkedList_v7): + + # 1. Элементы, входящие в L1, но не входящие в L2 + def difference(self, other: 'SingleLinkedList_v8') -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current = self._head while current: - if current.value == value: - return current.value + if not other.contains(current.data): + result.insert_last_node(current.data) current = current.next - return None - - def replace_node(self, old_value: ValueType, new_value: ValueType) -> None: - """Найти (первый) узел по его значению и заменить его значение новым""" - current = self.head + return result + + # 2. Количество максимальных элементов + def count_max_elements(self) -> int: + if self._head is None: + return 0 + + max_val = self._head.data + count = 1 + + current = self._head.next while current: - if current.value == old_value: - current.value = new_value - return + if current.data > max_val: + max_val = current.data + count = 1 + elif current.data == max_val: + count += 1 current = current.next - - def remove_node(self, value: ValueType) -> ValueType: - """Найти (первый) узел по его значению и удалить его""" - if self.head is None: - raise ValueError("Value not found in list") - # Если удаляем голову - if self.head.value == value: - return self.remove_first_node() + return count + + # 3. Список без повторений + def input_unique_numbers(self) -> None: + """Ввод чисел пользователем без повторений""" + seen = set() + + print("Введите числа (пустая строка для завершения):") + while True: + try: + user_input = input().strip() + if not user_input: + break + num = int(user_input) + if num not in seen: + seen.add(num) + self.insert_last_node(num) + except ValueError: + print("Ошибка: введите целое число") + + # 4. Отсортированная копия + def sorted_copy(self) -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current = self._head + + # Копируем элементы + while current: + result.insert_last_node(current.data) + current = current.next + + # Сортируем + result.sort() + return result + + # 5. Оставить только последние вхождения + def keep_last_occurrences(self) -> None: + if self._head is None: + return + + seen = set() + prev = None + current = self._head + + # Проходим с конца (реверсируем, обрабатываем, снова реверсируем) + self.reverse() + + current = self._head + prev = None + seen = set() - # Ищем узел для удаления - current = self.head - while current.next and current.next.value != value: + while current: + if current.data in seen: + # Удаляем дубликат + if prev: + prev.next = current.next + else: + self._head = current.next + self._size -= 1 + else: + seen.add(current.data) + prev = current current = current.next - if current.next is None: - raise ValueError("Value not found in list") + self.reverse() + + # 6. Убрать подряд идущие дубликаты + def remove_consecutive_duplicates(self) -> None: + if self._head is None: + return - value_to_return = current.next.value - current.next = current.next.next - self._size -= 1 - return value_to_return + current = self._head + while current and current.next: + if current.data == current.next.data: + current.next = current.next.next + self._size -= 1 + else: + current = current.next + # 7. Пересечение двух списков + def intersection(self, other: 'SingleLinkedList_v8') -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current = self._head + seen_in_other = set() + + # Собираем элементы из other + other_current = other._head + while other_current: + seen_in_other.add(other_current.data) + other_current = other_current.next + + # Добавляем только те, что есть в обоих + while current: + if current.data in seen_in_other: + result.insert_last_node(current.data) + current = current.next + + return result -# ===== ВЕРСИЯ 3 ===== -class SingleLinkedListV3(SingleLinkedListV2): - """Оптимизированная версия с O(1) для get_size""" - - def __init__(self): - super().__init__() - # Размер уже хранится в _size и обновляется при операциях + # 8. Разделить на положительные и отрицательные + def split_positive_negative(self) -> tuple: + positive = SingleLinkedList_v8() + negative = SingleLinkedList_v8() + + current = self._head + while current: + if current.data >= 0: + positive.insert_last_node(current.data) + else: + negative.insert_last_node(current.data) + current = current.next + + return positive, negative + # 9. Продублировать четные числа + def duplicate_even_numbers(self) -> None: + current = self._head + while current: + if current.data % 2 == 0: + new_node = Node(current.data, current.next) + current.next = new_node + current = new_node.next + self._size += 1 + else: + current = current.next + + # Обновляем tail + self._update_tail() -# ===== ВЕРСИЯ 4 ===== -class SingleLinkedListV4(SingleLinkedListV3): - """Добавлены методы для работы с соседними узлами""" - - def _find_node_object(self, value: ValueType) -> Optional[Node]: - """Внутренний метод для поиска узла-объекта""" - current = self.head + # 10. Проверка на упорядоченность по возрастанию + def is_sorted_ascending(self) -> bool: + if self._head is None or self._head.next is None: + return True + + current = self._head + while current.next: + if current.data > current.next.data: + return False + current = current.next + + return True + + # 11. Удалить нечетные числа + def remove_odd_numbers(self) -> None: + # Удаляем с начала пока голова нечетная + while self._head and self._head.data % 2 != 0: + self._head = self._head.next + self._size -= 1 + + if self._head is None: + self._tail = None + return + + # Удаляем нечетные в середине/конце + current = self._head + while current and current.next: + if current.next.data % 2 != 0: + current.next = current.next.next + self._size -= 1 + else: + current = current.next + + self._update_tail() + + # 12. Оставить только первые вхождения + def keep_first_occurrences(self) -> None: + if self._head is None: + return + + seen = set() + prev = None + current = self._head + while current: - if current.value == value: - return current + if current.data in seen: + # Удаляем дубликат + if prev: + prev.next = current.next + else: + self._head = current.next + self._size -= 1 + else: + seen.add(current.data) + prev = current current = current.next - return None - - def find_previos_node(self, value: ValueType) -> Optional[ValueType]: - """Найти значение из предыдущего узла""" - if self.head is None or self.head.value == value: - return None # У первого элемента нет предыдущего - current = self.head - while current.next: - if current.next.value == value: - return current.value + self._update_tail() + + # 13. Префиксные суммы + def prefix_sums(self) -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + if self._head is None: + return result + + current_sum = 0 + current = self._head + + while current: + current_sum += current.data + result.insert_last_node(current_sum) current = current.next - return None - - def find_next_node(self, value: ValueType) -> Optional[ValueType]: - """Найти значение из следующего узла""" - node = self._find_node_object(value) - if node and node.next: - return node.next.value - return None - - def insert_before_node(self, target_value: ValueType, new_value: ValueType) -> None: - """Добавить узел перед узлом с заданным значением""" - if self.head is None: - return - # Если вставляем перед головой - if self.head.value == target_value: - self.insert_first_node(new_value) + return result + + # 14. Пересечение (альтернативная реализация) + def intersection_alt(self, other: 'SingleLinkedList_v8') -> 'SingleLinkedList_v8': + return self.intersection(other) + + # 15. Удалить уникальные элементы + def remove_unique_elements(self) -> None: + if self._head is None: return - # Ищем узел, предшествующий целевому - current = self.head - while current.next and current.next.value != target_value: + # Считаем частоты + frequency = {} + current = self._head + while current: + frequency[current.data] = frequency.get(current.data, 0) + 1 current = current.next - if current.next is None: # Узел не найден - return + # Удаляем элементы с частотой 1 + prev = None + current = self._head + while current: + if frequency[current.data] == 1: + if prev: + prev.next = current.next + else: + self._head = current.next + self._size -= 1 + else: + prev = current + current = current.next - new_node = Node(new_value) - new_node.next = current.next - current.next = new_node - self._size += 1 - - def insert_after_node(self, target_value: ValueType, new_value: ValueType) -> None: - """Добавить узел после узла с заданным значением""" - target_node = self._find_node_object(target_value) - if target_node is None: - return + self._update_tail() + + # 16. Количество различных в возрастающей последовательности + def count_distinct_in_sorted(self) -> int: + if self._head is None: + return 0 - new_node = Node(new_value) - new_node.next = target_node.next - target_node.next = new_node - self._size += 1 - - def replace_previos_node(self, target_value: ValueType, new_value: ValueType) -> None: - """Заменить значение в предыдущем узле""" - if self.head is None or self.head.value == target_value: - return # У первого элемента нет предыдущего + count = 1 + current = self._head - current = self.head while current.next: - if current.next.value == target_value: - current.value = new_value - return + if current.data != current.next.data: + count += 1 current = current.next - - def replace_next_node(self, target_value: ValueType, new_value: ValueType) -> None: - """Заменить значение в следующем узле""" - target_node = self._find_node_object(target_value) - if target_node and target_node.next: - target_node.next.value = new_value - - def remove_previos_node(self, target_value: ValueType) -> Optional[ValueType]: - """Удалить предыдущий узел""" - if self.head is None or self.head.value == target_value: - return None # У первого элемента нет предыдущего - # Если удаляем элемент перед головой (невозможно по логике) - if self.head.next and self.head.next.value == target_value: - return self.remove_first_node() + return count + + # 17. Удалить четные числа + def remove_even_numbers(self) -> None: + # Удаляем с начала пока голова четная + while self._head and self._head.data % 2 == 0: + self._head = self._head.next + self._size -= 1 + + if self._head is None: + self._tail = None + return - # Ищем узел, который находится за два узла до целевого - current = self.head - while current.next and current.next.next: - if current.next.next.value == target_value: - value_to_return = current.next.value + # Удаляем четные в середине/конце + current = self._head + while current and current.next: + if current.next.data % 2 == 0: current.next = current.next.next self._size -= 1 - return value_to_return - current = current.next + else: + current = current.next - return None - - def remove_next_node(self, target_value: ValueType) -> Optional[ValueType]: - """Удалить следующий узел""" - target_node = self._find_node_object(target_value) - if target_node and target_node.next: - value_to_return = target_node.next.value - target_node.next = target_node.next.next - self._size -= 1 - return value_to_return - return None + self._update_tail() + # 18. Преобразовать четные/нечетные + def transform_even_odd(self) -> None: + current = self._head + while current: + if current.data % 2 == 0: + current.data = current.data // 2 + else: + current.data = current.data * 2 + current = current.next -# ===== ВЕРСИЯ 5 ===== -class SingleLinkedListV5(SingleLinkedListV4): - """Версия с ссылкой на последний элемент для оптимизации""" - - def __init__(self): - super().__init__() - self.tail: Optional[Node] = None - - def insert_first_node(self, value: ValueType) -> None: - new_node = Node(value) - new_node.next = self.head - self.head = new_node + # 19. Есть ли элементы больше суммы всех + def has_elements_greater_than_sum(self) -> bool: + if self._head is None: + return False - if self.tail is None: # Если список был пуст - self.tail = new_node + total_sum = 0 + current = self._head + while current: + total_sum += current.data + current = current.next - self._size += 1 - - def remove_first_node(self) -> ValueType: - if self.head is None: - raise IndexError("Cannot remove from empty list") + current = self._head + while current: + if current.data > total_sum: + return True + current = current.next - value = self.head.value - self.head = self.head.next + return False + + # 20. Удалить элементы, входящие более двух раз + def remove_elements_more_than_twice(self) -> None: + if self._head is None: + return - if self.head is None: # Если список стал пуст - self.tail = None + # Считаем частоты + frequency = {} + current = self._head + while current: + frequency[current.data] = frequency.get(current.data, 0) + 1 + current = current.next - self._size -= 1 - return value - - def insert_last_node(self, value: ValueType) -> None: - new_node = Node(value) + # Удаляем элементы с частотой > 2 + count = {} + prev = None + current = self._head - if self.tail is None: # Пустой список - self.head = new_node - self.tail = new_node - else: - self.tail.next = new_node - self.tail = new_node + while current: + count[current.data] = count.get(current.data, 0) + 1 + + if frequency[current.data] > 2 and count[current.data] > 2: + # Удаляем лишние вхождения + if prev: + prev.next = current.next + else: + self._head = current.next + self._size -= 1 + else: + prev = current + + current = current.next - self._size += 1 - - def remove_last_node(self) -> ValueType: - if self.head is None: - raise IndexError("Cannot remove from empty list") + self._update_tail() + + # 21. Среднее арифметическое + def arithmetic_mean(self) -> float: + if self._head is None: + return 0.0 - # Если в списке только один элемент - if self.head == self.tail: - value = self.head.value - self.head = None - self.tail = None - self._size -= 1 - return value + total_sum = 0 + count = 0 + current = self._head - # Ищем предпоследний элемент - current = self.head - while current.next != self.tail: + while current: + total_sum += current.data + count += 1 current = current.next - value = self.tail.value - current.next = None - self.tail = current - self._size -= 1 - return value - + return total_sum / count -# ===== ВЕРСИЯ 6 ===== -class SingleLinkedListV6(SingleLinkedListV5): - """Версия с оптимизацией вставки перед узлом""" - - def insert_before_node(self, target_value: ValueType, new_value: ValueType) -> None: - """Оптимизированная вставка перед узлом""" - if self.head is None: - return + # 22. Слияние двух отсортированных списков + def merge_sorted(self, other: 'SingleLinkedList_v8') -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current1 = self._head + current2 = other._head - # Если вставляем перед головой - if self.head.value == target_value: - self.insert_first_node(new_value) - return + while current1 and current2: + if current1.data <= current2.data: + result.insert_last_node(current1.data) + current1 = current1.next + else: + result.insert_last_node(current2.data) + current2 = current2.next - # Ищем узел, предшествующий целевому - current = self.head - while current.next and current.next.value != target_value: - current = current.next + # Добавляем оставшиеся элементы + while current1: + result.insert_last_node(current1.data) + current1 = current1.next - if current.next is None: # Узел не найден + while current2: + result.insert_last_node(current2.data) + current2 = current2.next + + return result + + # 23. Удалить каждый третий элемент + def remove_every_third(self) -> None: + if self._head is None: return - # Создаем новый узел и вставляем его - new_node = Node(new_value) - new_node.next = current.next - current.next = new_node - self._size += 1 - - def remove_node(self, value: ValueType) -> ValueType: - """Оптимизированное удаление узла""" - if self.head is None: - raise ValueError("Value not found in list") + count = 1 + prev = None + current = self._head - # Если удаляем голову - if self.head.value == value: - return self.remove_first_node() + while current: + if count % 3 == 0: + if prev: + prev.next = current.next + else: + self._head = current.next + self._size -= 1 + else: + prev = current + + current = current.next + count += 1 + + self._update_tail() + + # 24. Простые числа + def filter_primes(self) -> 'SingleLinkedList_v8': + def is_prime(n): + if n < 2: + return False + for i in range(2, int(n**0.5) + 1): + if n % i == 0: + return False + return True - # Если удаляем хвост - if self.tail and self.tail.value == value: - return self.remove_last_node() + result = SingleLinkedList_v8() + current = self._head - # Обычный поиск и удаление - current = self.head - while current.next and current.next.value != value: + while current: + if is_prime(int(current.data)): + result.insert_last_node(current.data) current = current.next - if current.next is None: - raise ValueError("Value not found in list") + return result + + # 25. Проверка на равенство множеств + def sets_equal(self, other: 'SingleLinkedList_v8') -> bool: + set1 = set() + set2 = set() - value_to_return = current.next.value - current.next = current.next.next + current = self._head + while current: + set1.add(current.data) + current = current.next - # Если удалили хвост, обновляем tail - if current.next is None: - self.tail = current + current = other._head + while current: + set2.add(current.data) + current = current.next - self._size -= 1 - return value_to_return - - -# ===== ТЕСТИРОВАНИЕ ===== -def test_versions(): - print("=== Тестирование всех версий ===") - - # Тест версии 1 - print("\n--- Версия 1 ---") - list1 = SingleLinkedListV1() - list1.insert_first_node(3) - list1.insert_first_node(2) - list1.insert_first_node(1) - list1.insert_last_node(4) - print(f"Список: {list1}") - print(f"Удален первый: {list1.remove_first_node()}") - print(f"Удален последний: {list1.remove_last_node()}") - print(f"Список после удалений: {list1}") - - # Тест версии 2 - print("\n--- Версия 2 ---") - list2 = SingleLinkedListV2() - for i in range(5): - list2.insert_last_node(i) - print(f"Список: {list2}") - print(f"Размер: {list2.get_size()}") - print(f"Найден 3: {list2.find_node(3)}") - list2.replace_node(2, 20) - print(f"После замены 2 на 20: {list2}") - print(f"Удален узел 20: {list2.remove_node(20)}") - print(f"Список после удаления: {list2}") - - # Тест версии 4 - print("\n--- Версия 4 ---") - list4 = SingleLinkedListV4() - for i in range(1, 6): - list4.insert_last_node(i) - print(f"Список: {list4}") - print(f"Предыдущий для 3: {list4.find_previos_node(3)}") - print(f"Следующий для 3: {list4.find_next_node(3)}") - list4.insert_before_node(3, 25) - list4.insert_after_node(3, 35) - print(f"После вставки 25 перед 3 и 35 после 3: {list4}") - - # Тест версии 5 - print("\n--- Версия 5 ---") - list5 = SingleLinkedListV5() - for i in range(3): - list5.insert_last_node(i) - print(f"Список: {list5}") - print(f"Голова: {list5.head.value if list5.head else None}") - print(f"Хвост: {list5.tail.value if list5.tail else None}") - - # Тест версии 6 - print("\n--- Версия 6 ---") - list6 = SingleLinkedListV6() - for i in range(1, 4): - list6.insert_last_node(i) - print(f"Список: {list6}") - list6.insert_before_node(2, 15) - list6.insert_after_node(2, 25) - print(f"После вставок: {list6}") - -if __name__ == "__main__": - test_versions() -``` - -**Версия 1 (Базовая):** -Базовые операции: вставка/удаление в начало/конец - -**Версия 2 (Поиск и замена):** -Добавлены методы поиска, замены и удаления по значению - -Поддержка размера списка - -**Версия 3 (Оптимизированный размер):** -O(1) получение размера за счет его хранения - -**Версия 4 (Работа с соседями):** -Методы для работы с предыдущими/следующими узлами - -Вставка/замена/удаление соседних узлов - -**Версия 5 (Ссылка на хвост):** -Добавлен указатель на последний элемент + return set1 == set2 -Оптимизация операций с концом списка + # 26. Среднее арифметическое (дубликат) + def average(self) -> float: + return self.arithmetic_mean() -**Версия 6 (Оптимизированные операции):** -Дополнительные оптимизации для операций вставки/удаления - -Каждая последующая версия наследуется от предыдущей и добавляет новую функциональность или оптимизации, соответствующие требованиям в описании задачи. - - -### **Задание 2-3** - -```python -class ListNode: - """Узел линейного списка""" - def __init__(self, value=0, next=None): - self.value = value - self.next = next + # 27. Элементы, делящиеся на 3, в порядке убывания + def divisible_by_three_descending(self) -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current = self._head + + while current: + if current.data % 3 == 0: + result.insert_last_node(current.data) + current = current.next + + result.sort() + result.reverse() + return result -class LinkedList: - """Линейный связный список""" - def __init__(self): - self.head = None - - def append(self, value): - """Добавление элемента в конец списка""" - new_node = ListNode(value) - if not self.head: - self.head = new_node + # 28. Удалить все минимальные элементы + def remove_all_minimal(self) -> None: + if self._head is None: return - current = self.head - while current.next: - current = current.next - current.next = new_node - - def print_list(self): - """Вывод списка""" - elements = [] - current = self.head + # Находим минимум + min_val = self._head.data + current = self._head.next while current: - elements.append(str(current.value)) + if current.data < min_val: + min_val = current.data current = current.next - print(" -> ".join(elements)) - - def reverse(self): - """ - Переворачивает список на месте. - Временная сложность: O(n) - Пространственная сложность: O(1) - """ - prev = None - current = self.head - while current: - # Сохраняем ссылку на следующий узел - next_node = current.next - # Разворачиваем ссылку - current.next = prev - # Перемещаем указатели - prev = current - current = next_node - - # Обновляем голову списка - self.head = prev - - def sort(self): - """ - Сортирует список на месте методом пузырьковой сортировки. - Временная сложность: O(n²) - Пространственная сложность: O(1) - """ - if not self.head or not self.head.next: - return # Пустой список или список с одним элементом уже отсортирован + # Удаляем все минимальные + while self._head and self._head.data == min_val: + self._head = self._head.next + self._size -= 1 - swapped = True - while swapped: - swapped = False - current = self.head - - while current and current.next: - if current.value > current.next.value: - # Меняем значения местами - current.value, current.next.value = current.next.value, current.value - swapped = True + if self._head is None: + self._tail = None + return + + current = self._head + while current and current.next: + if current.next.data == min_val: + current.next = current.next.next + self._size -= 1 + else: current = current.next - - # Альтернативная реализация сортировки слиянием (более эффективная) - def merge_sort(self): - """ - Сортирует список на месте методом слияния. - Временная сложность: O(n log n) - Пространственная сложность: O(log n) из-за рекурсии - """ - self.head = self._merge_sort(self.head) - - def _merge_sort(self, head): - """Вспомогательный метод для сортировки слиянием""" - # Базовый случай: пустой список или список с одним элементом - if not head or not head.next: - return head - - # Находим середину списка - middle = self._get_middle(head) - next_to_middle = middle.next - - # Разделяем список на две половины - middle.next = None - - # Рекурсивно сортируем обе половины - left = self._merge_sort(head) - right = self._merge_sort(next_to_middle) - - # Объединяем отсортированные половины - return self._merge(left, right) - - def _get_middle(self, head): - """Находит середину списка""" - if not head: - return head - - slow = head - fast = head - - while fast.next and fast.next.next: - slow = slow.next - fast = fast.next.next - - return slow - - def _merge(self, left, right): - """Объединяет два отсортированных списка""" - if not left: - return right - if not right: - return left - - result = None - - if left.value <= right.value: - result = left - result.next = self._merge(left.next, right) - else: - result = right - result.next = self._merge(left, right.next) - return result - - -# Демонстрация работы методов -if __name__ == "__main__": - # Создаем и тестируем список - lst = LinkedList() - - # Добавляем элементы - for value in [5, 2, 8, 1, 9]: - lst.append(value) - - print("Исходный список:") - lst.print_list() - - # Тестируем reverse - lst.reverse() - print("\nПосле reverse:") - lst.print_list() - - # Тестируем сортировку пузырьком - lst.sort() - print("\nПосле sort (пузырьковая):") - lst.print_list() - - # Тестируем reverse отсортированного списка - lst.reverse() - print("\nПосле reverse отсортированного списка:") - lst.print_list() - - # Создаем новый список для тестирования сортировки слиянием - lst2 = LinkedList() - for value in [7, 3, 9, 1, 6, 4]: - lst2.append(value) - - print("\nНовый список для сортировки слиянием:") - lst2.print_list() - - lst2.merge_sort() - print("После merge_sort:") - lst2.print_list() -``` + self._update_tail() -**Метод reverse:** -Алгоритм: Итеративно переворачивает ссылки между узлами - -Сложность: O(n) по времени, O(1) по памяти - -Принцип работы: Использует три указателя (prev, current, next) для изменения направления ссылок - -**Метод sort (пузырьковая сортировка):** -Алгоритм: Сравнивает и меняет местами соседние элементы - -Сложность: O(n²) по времени, O(1) по памяти - -Принцип работы: Проходит по списку несколько раз, пока не останется перестановок - -**Метод merge_sort (сортировка слиянием):** -Алгоритм: Делит список пополам, рекурсивно сортирует половины, затем объединяет - -Сложность: O(n log n) по времени, O(log n) по памяти (из-за рекурсии) - -Принцип работы: Использует стратегию "разделяй и властвуй" - -Оба метода сортировки работают "на месте" в том смысле, что они не создают новый список, а перестраивают существующий. - - -### **Задание 3** + # 29. Среднее геометрическое + def geometric_mean(self) -> float: + if self._head is None: + return 0.0 + + product = 1 + count = 0 + current = self._head + + while current: + product *= current.data + count += 1 + current = current.next + + return product ** (1 / count) -```python -def count_max_elements_single_pass(numbers): - """ - Однопроходный алгоритм для подсчета количества максимальных элементов в списке. - - Args: - numbers: список действительных чисел - - Returns: - int: количество максимальных элементов - """ - if not numbers: - return 0 - - max_value = numbers[0] - count = 1 - - for i in range(1, len(numbers)): - current = numbers[i] + # 30. Добавить сумму трех предыдущих после каждого третьего + def add_sum_of_three_after_every_third(self) -> None: + if self._size < 3: + return - if current > max_value: - max_value = current - count = 1 - elif current == max_value: + count = 1 + current = self._head + + while current and current.next and current.next.next: + if count % 3 == 0: + # Находим три предыдущих элемента + prev3 = current + prev2 = current.next if current.next else None + prev1 = current.next.next if current.next and current.next.next else None + + if prev3 and prev2 and prev1: + sum_three = prev3.data + prev2.data + prev1.data + new_node = Node(sum_three, current.next) + current.next = new_node + self._size += 1 + current = new_node + + current = current.next count += 1 - - return count + + self._update_tail() + # 31. Разделить на четные и нечетные + def split_even_odd(self) -> tuple: + even = SingleLinkedList_v8() + odd = SingleLinkedList_v8() + + current = self._head + while current: + if current.data % 2 == 0: + even.insert_last_node(current.data) + else: + odd.insert_last_node(current.data) + current = current.next + + return even, odd -# ТЕСТИРОВАНИЕ - 14 ТЕСТОВ -def run_14_tests(): - """Запуск 14 тестов для однопроходного алгоритма""" - - print("=" * 60) - print("ТЕСТИРОВАНИЕ ОДНОПРОХОДНОГО АЛГОРИТМА (14 ТЕСТОВ)") - print("=" * 60) - - # 14 тестовых случаев - test_cases = [ - # Тест 1: Обычный случай - ([1.5, 2.3, 2.3, 1.1, 2.3], 3, "Несколько максимальных элементов"), + # 32. Продублировать простые числа + def duplicate_primes(self) -> None: + def is_prime(n): + if n < 2: + return False + for i in range(2, int(n**0.5) + 1): + if n % i == 0: + return False + return True - # Тест 2: Один максимальный - ([5.0, 4.0, 3.0, 2.0, 1.0], 1, "Один максимальный элемент"), + current = self._head + while current: + if is_prime(int(current.data)): + new_node = Node(current.data, current.next) + current.next = new_node + current = new_node.next + self._size += 1 + else: + current = current.next - # Тест 3: Все элементы равны - ([1.0, 1.0, 1.0, 1.0, 1.0], 5, "Все элементы равны"), + self._update_tail() + + # 33. Попарные произведения + def pairwise_product(self, other: 'SingleLinkedList_v8') -> 'SingleLinkedList_v8': + result = SingleLinkedList_v8() + current1 = self._head + current2 = other._head - # Тест 4: Один элемент - ([3.14], 1, "Один элемент в списке"), + while current1 and current2: + result.insert_last_node(current1.data * current2.data) + current1 = current1.next + current2 = current2.next - # Тест 5: Пустой список - ([], 0, "Пустой список"), + return result + + # 34. Количество различных значений + def count_distinct(self) -> int: + distinct = set() + current = self._head - # Тест 6: Отрицательные числа - ([-1.5, -2.3, -1.5, -3.0], 2, "Отрицательные числа с повторениями"), + while current: + distinct.add(current.data) + current = current.next - # Тест 7: Отрицательные с одним максимумом - ([-5.0, -1.0, -10.0, -1.0], 2, "Максимум среди отрицательных"), + return len(distinct) + + # 35. Удалить все максимальные элементы + def remove_all_maximal(self) -> None: + if self._head is None: + return - # Тест 8: Нули - ([0.0, -0.0, 0.0], 3, "Ноль и отрицательный ноль"), + # Находим максимум + max_val = self._head.data + current = self._head.next + while current: + if current.data > max_val: + max_val = current.data + current = current.next - # Тест 9: Маленькие числа - ([1e-10, 1e-10, 2e-10], 1, "Очень маленькие числа"), + # Удаляем все максимальные + while self._head and self._head.data == max_val: + self._head = self._head.next + self._size -= 1 - # Тест 10: Большие числа - ([1000000.0, 1000000.0, 500000.0], 2, "Большие числа"), + if self._head is None: + self._tail = None + return - # Тест 11: Максимум в начале - ([10.0, 5.0, 3.0], 1, "Максимум в начале"), + current = self._head + while current and current.next: + if current.next.data == max_val: + current.next = current.next.next + self._size -= 1 + else: + current = current.next - # Тест 12: Максимум в конце - ([5.0, 3.0, 10.0], 1, "Максимум в конце"), + self._update_tail() + + # 36. Проверка на геометрическую прогрессию + def is_geometric_progression(self) -> bool: + if self._head is None or self._head.next is None: + return True - # Тест 13: Максимум в середине - ([5.0, 10.0, 3.0], 1, "Максимум в середине"), + current = self._head + ratio = None - # Тест 14: Максимум в начале и конце - ([10.0, 5.0, 10.0], 2, "Максимум в начале и конце") - ] - - passed = 0 - failed = 0 - - for i, (numbers, expected, description) in enumerate(test_cases, 1): - result = count_max_elements_single_pass(numbers) + while current and current.next: + if current.data == 0: + return False # Ноль нарушает прогрессию + + current_ratio = current.next.data / current.data + + if ratio is None: + ratio = current_ratio + elif abs(current_ratio - ratio) > 1e-10: # Учет погрешности для float + return False + + current = current.next - if result == expected: - print(f"ТЕСТ {i:2d}: ✓ ПРОЙДЕН - {description}") - print(f" Вход: {numbers}") - print(f" Результат: {result}") - passed += 1 - else: - print(f"ТЕСТ {i:2d}: ✗ НЕ ПРОЙДЕН - {description}") - print(f" Вход: {numbers}") - print(f" Ожидалось: {expected}, Получено: {result}") - failed += 1 - - if i < len(test_cases): # Не печатать разделитель после последнего теста - print("-" * 50) - - print("\n" + "=" * 60) - print("ИТОГИ ТЕСТИРОВАНИЯ:") - print(f"Всего тестов: {len(test_cases)}") - print(f"Пройдено: {passed}") - print(f"Не пройдено: {failed}") - print(f"Успешность: {passed/len(test_cases)*100:.1f}%") - print("=" * 60) + return True -if __name__ == "__main__": - - run_14_tests() - - + # 37. Поменять местами максимальный и минимальный элементы + def swap_min_max(self) -> None: + if self._head is None or self._head.next is None: + return + + # Находим min и max узлы + min_node = max_node = self._head + current = self._head + + while current: + if current.data < min_node.data: + min_node = current + if current.data > max_node.data: + max_node = current + current = current.next + + # Меняем значения + min_node.data, max_node.data = max_node.data, min_node.data + + # Вспомогательные методы + def contains(self, value: Any) -> bool: + current = self._head + while current: + if current.data == value: + return True + current = current.next + return False + + def _update_tail(self) -> None: + if self._head is None: + self._tail = None + return + + current = self._head + while current and current.next: + current = current.next + self._tail = current ``` ### ** Задание 5** @@ -1117,7 +1878,7 @@ if __name__ == "__main__": ### **Контрольные вопросы** -**1. Определение линейного списка. Отличие от массива** +#### **1. Определение линейного списка. Отличие от массива** Линейный список — это структура данных, состоящая из набора элементов данных (узлов), в которой каждый элемент хранит помимо своих данных ссылку (указатель) на следующий (а возможно, и на предыдущий) элемент последовательности. Принципиальное отличие от массива: @@ -1128,7 +1889,7 @@ if __name__ == "__main__": Динамичность: Размер массива часто фиксирован (в статических массивах) или требует перевыделения всей памяти при изменении (в динамических). Список является по-настояственно динамической структурой: новые элементы можно добавлять и удалять в любом месте, выделяя и освобождая память только под конкретный узел. -**2. Что такое «узел» (node)?** +#### **2. Что такое «узел» (node)?** Узел — это элементарный блок, из которого строится связный список. Он инкапсулирует данные и связь с соседними узлами. Поля узла: @@ -1147,13 +1908,13 @@ next (следующий) — указатель на следующий узе prev (предыдущий) — указатель на предыдущий узел. Для первого узла этот указатель равен NULL. -**3. Что такое «голова» (head) списка?** +#### **3. Что такое «голова» (head) списка?** Голова (head) — это указатель на первый узел связного списка. Это отправная точка для любого обхода или операции со списком. Если список пуст, head равен NULL. Роль головы критически важна, так как потеря этого указателя означает потерю доступа ко всему списку. -**4. Для чего хранится указатель на «хвост» (tail)?** +#### **4. Для чего хранится указатель на «хвост» (tail)?** Указатель «хвост» (tail) хранит адрес последнего узла списка. Он используется для ускорения операций добавления элемента в конец списка. Без tail для вставки в конец необходимо обойти весь список от головы до конца (O(n)), а с tail эта операция выполняется за O(1). -**5. Основные виды линейных списков (по типу связности)** +#### **5. Основные виды линейных списков (по типу связности)** Односвязный список (Singly Linked List): Каждый узел содержит указатель только на следующий узел. Двусвязный список (Doubly Linked List): Каждый узел содержит указатели как на следующий, так и на предыдущий узел. @@ -1164,7 +1925,7 @@ prev (предыдущий) — указатель на предыдущий у Двусвязный кольцевой: Указатель next последнего узла указывает на первый, а указатель prev первого узла указывает на последний. -**6. Алгоритм добавления в начало односвязного списка (O(1))** +#### **6. Алгоритм добавления в начало односвязного списка (O(1))** Создать новый узел new_node. Записать в его поле data нужное значение. @@ -1175,7 +1936,7 @@ prev (предыдущий) — указатель на предыдущий у Почему O(1)? Эта операция выполняется за константное время, независимо от длины списка, так как требует фиксированного числа действий и всегда известен адрес головы. -**7. Алгоритм добавления в конец односвязного списка без tail (O(n))** +#### **7. Алгоритм добавления в конец односвязного списка без tail (O(n))** Создать новый узел new_node. Установить его next в NULL (так как он будет последним). @@ -1188,7 +1949,7 @@ prev (предыдущий) — указатель на предыдущий у Почему O(n)? В худшем случае (когда в списке много элементов) необходимо пройти от начала до конца всего списка, что требует n шагов. -**8. Удаление узла из односвязного списка** +#### **8. Удаление узла из односвязного списка** Причина необходимости указателя на предыдущий элемент: В односвязном списке узел "не знает" о своем предыдущем узле. Если мы просто удалим узел B (на который у нас есть указатель), то узел A, который был до него, будет по-прежнему указывать на несуществующую (удаленную) память. Это приведет к ошибке. Нам нужно изменить поле next узла A, чтобы он указывал на узел C, следующий за B. Алгоритм (когда известен предыдущий узел prev): @@ -1199,7 +1960,7 @@ prev (предыдущий) — указатель на предыдущий у Освободить память, занимаемую node_to_delete. -**9. Преимущество двусвязного списка и алгоритм удаления** +#### **9. Преимущество двусвязного списка и алгоритм удаления** Ключевое преимущество: В двусвязном списке узел содержит указатель на предыдущий элемент, поэтому для удаления произвольного узла не нужно искать его предыдущий элемент — он уже известен. Алгоритм удаления (дан указатель node на удаляемый узел): @@ -1214,7 +1975,7 @@ prev (предыдущий) — указатель на предыдущий у Освободить память, занимаемую node. -**10. Что такое «кольцевой/циклический список»?** +#### **10. Что такое «кольцевой/циклический список»?** Кольцевой список — это список, в котором последний узел указывает на первый (в односвязном) или первый и последний узлы ссылаются друг на друга (в двусвязном). В таком списке нет NULL-указателей в полях связей next/prev. Особенности обработки: @@ -1223,43 +1984,68 @@ prev (предыдущий) — указатель на предыдущий у Проверка на пустоту: Список пуст, если head == NULL. В непустом списке head->next никогда не NULL. -**11. Таблица асимптотической сложности операций** -Операция Односвязный (без tail) Односвязный (с tail) Двусвязный (с tail) -Вставка в начало O(1) O(1) O(1) -Вставка в конец O(n) O(1) O(1) -Удаление из начала O(1) O(1) O(1) -Удаление из конца O(n) O(n)* O(1) -Поиск элемента по значению O(n) О(n) O(n) -Вставка после известного узла O(1) O(1) O(1) -Удаление известного узла O(n)** O(n)** O(1) -Доступ к элементу по индексу O(n) O(n) O(n) +#### **11. Таблица асимптотической сложности операций** +| Операция | Односвязный (без tail) | Односвязный (с tail) | Двусвязный (с tail) | +|------------------------------|------------------------|----------------------|---------------------| +| Вставка в начало | O(1) | O(1) | O(1) | +| Вставка в конец | O(n) | O(1) | O(1) | +| Удаление из начала | O(1) | O(1) | O(1) | +| Удаление из конца | O(n) | O(n)* | O(1) | +| Поиск элемента по значению | O(n) | O(n) | O(n) | +| Вставка после известного узла| O(1) | O(1) | O(1) | +| Удаление известного узла | O(n)** | O(n)** | O(1) | +| Доступ к элементу по индексу | O(n) | O(n) | O(n) | *Удаление из конца в односвязном списке с tail все равно требует O(n), так как для обновления tail нужен указатель на предыдущий элемент (который становится новым хвостом). **Удаление известного узла в односвязном списке требует O(n) для поиска предыдущего узла, если он не предоставлен. -**13. Объяснение сложности доступа по индексу** +#### **12. Объяснение сложности доступа по индексу** Массив O(1): Адрес i-го элемента вычисляется по формуле адрес_начала + i * размер_элемента. Это одна арифметическая операция. Список O(n): Чтобы добраться до i-го элемента, нужно стартовать с головы и i раз последовательно перейти по ссылке next. -**13. Объяснение сложности вставки** +#### **13. Объяснение сложности вставки** В начало O(1): Адрес головы всегда известен. Операция требует создания одного нового узла и перенаправления двух указателей. В конец (без tail) O(n): Адрес последнего элемента неизвестен. Чтобы его найти, нужно пройти через все n узлов списка. -**14. Преимущества и недостатки списка vs массива** -Критерий -Связный список Массив -Преимущества -• Динамический размер • Быстрый доступ по индексу (O(1)) -• Вставка/удаление в начале за O(1) • Локальность данных (кэш-эффективность) -• Не требует непрерывной памяти • Меньший overhead на элемент (нет указателей) +#### **14. Преимущества и недостатки списка vs массива** + +**Связный список** + +Преимущества + +• Динамический размер + +• Вставка/удаление в начале за O(1) + +• Не требует непрерывной памяти + Недоститки -• Медленный доступ по индексу (O(n)) • Фиксированный размер (или дорогое перевыделение) -• Нет локальности данных (кэш-промахи) • Вставка/удаление в начале/середине требует сдвига (O(n)) + +• Медленный доступ по индексу (O(n)) + +• Нет локальности данных (кэш-промахи) + • Дополнительная память на указатели -**15. Примеры эффективного использования списков** + +**Массив** + +Преимущества + +• Быстрый доступ по индексу (O(1)) + +• Локальность данных (кэш-эффективность) + +• Меньший overhead на элемент (нет указателей) + +Недостатки + +• Фиксированный размер (или дорогое перевыделение) + +• Вставка/удаление в начале/середине требует сдвига (O(n)) +#### **15. Примеры эффективного использования списков** Стек (LIFO): Реализуется на основе односвязного списка с операциями push (в начало) и pop (из начала), которые выполняются за O(1). Очередь (FIFO): Реализуется на основе односвязного списка с tail (вставка в конец O(1), удаление из начала O(1)) или двусвязного списка. @@ -1268,19 +2054,19 @@ prev (предыдущий) — указатель на предыдущий у Системный аллокатор (управление памятью): Списки свободных блоков памяти. -**16. Причина использования двусвязных списков в сложных структурах** +#### **16. Причина использования двусвязных списков в сложных структурах** Двусвязные списки позволяют эффективно (за O(1)) удалять произвольный узел и вставлять элементы как до, так и после известного узла. Это критически важно для: Deque (двусторонняя очередь): Нужны быстрые вставки и удаления с обоих концов (O(1)). Метод цепочек в хеш-таблицах: При частых удалениях двусвязный список делает эту операцию намного эффективнее. -**17. «Фиктивная» нода (Dummy Node)** +#### **17. «Фиктивная» нода (Dummy Node)** Фиктивная нода — это узел, не содержащий полезных данных, который помещается в начало (иногда и в конец) списка. Ее поля data не используются, а next указывает на реальную голову списка. Преимущество: Упрощает код, устраняя множество проверок на NULL. Например, операция вставки в начало или удаления первого элемента становится частным случаем вставки/удаления в середину, так как у первого реального элемента всегда есть "предыдущий" узел (фиктивный). -**18. Алгоритм реверсирования односвязного списка** +#### **18. Алгоритм реверсирования односвязного списка** Алгоритм (итеративный, без дополнительной памяти O(1)): Инициализировать три указателя: prev = NULL, current = head, next = NULL. @@ -1292,7 +2078,7 @@ c. Сдвинуть указатели на один шаг вперед: prev = Обновить голову: head = prev (теперь prev указывает на новую голову — старый хвост). -**19. Алгоритм определения цикла (Floyd's Cycle-Finding)** +#### **19. Алгоритм определения цикла (Floyd's Cycle-Finding)** Алгоритм "Черепаха и Заяц": Создать два указателя, оба указывают на голову списка: slow и fast. @@ -1304,7 +2090,7 @@ c. Если slow == fast, значит, в списке есть цикл. Если fast или fast->next стали NULL, циклов нет. -**20. Поиск среднего элемента за один проход** +#### **20. Поиск среднего элемента за один проход** Используется модификация алгоритма с двумя указателями: Указатели slow и fast стартуют с головы. @@ -1313,7 +2099,7 @@ c. Если slow == fast, значит, в списке есть цикл. Когда fast достигнет конца списка (fast == NULL или fast->next == NULL), slow будет указывать на средний элемент. -**21. Проблема удаления узла в односвязном списке без доступа к предыдущему** +#### **21. Проблема удаления узла в односвязном списке без доступа к предыдущему** Проблема: Невозможно напрямую удалить узел, так как нужно обновить указатель next его предыдущего узла, а он неизвестен. Решение (Хитрость, O(1)): @@ -1326,3 +2112,11 @@ node->next = node->next->next; Ограничение: Не работает, если удаляемый узел является последним в списке. В этом случае без указателя на предыдущий узел обойтись невозможн + +```python + +``` + +```python + +``` From f9178be7d5ab403e27747059c3cbc6ee18675cec Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 19 Oct 2025 18:35:53 +0300 Subject: [PATCH 14/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_04/Untitled.md | 1188 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1188 insertions(+) create mode 100644 labs/lab_04/Untitled.md diff --git a/labs/lab_04/Untitled.md b/labs/lab_04/Untitled.md new file mode 100644 index 0000000..3523ec0 --- /dev/null +++ b/labs/lab_04/Untitled.md @@ -0,0 +1,1188 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# **Стек, Очередь, Дек** + + +## **Цель работы** + + +Изучение структур данных «Стек», «Очередь», «Дек», а также основных операций над ними. + + +Выполнил Асонов Сергей ИУ10-36 + + +## **Краткие теоретические сведения** + + +Линейные списки являются фундаментальной структурой данных, на основе которой эффективно реализуются другие абстрактные типы данных (АТД). В данном разделе рассматривается реализация стека, очереди и дека с использованием как односвязных, так и двусвязных списков. + + +### **Стек (Stack)** +**Стек** — это структура данных, работающая по принципу **LIFO (Last-In, First-Out)** — «последним пришёл — первым ушёл». + +**Основные операции:** + +push(x) — добавление элемента x на вершину стека. +pop() — удаление и возврат элемента с вершины стека. +peek() (или top()) — возврат элемента с вершины стека без удаления. +isEmpty() — проверка стека на пустоту. +**Реализация на односвязном списке:** + +Вершиной стека является **голова** списка. Добавление и удаление элемента выполняются строго с головы. + +push(x): Создать новый узел new_node со значением x. Установить new_node.next = head. Переместить голову на new_node. +pop(): Если список пуст — ошибка. Иначе: сохранить значение head.data, переместить голову на head.next, вернуть сохранённое значение. +**Сложность операций:** push, pop, peek, isEmpty выполняются за O(1). + +### **Очередь (Queue)** + +**Очередь** — это структура данных, работающая по принципу FIFO (First-In, First-Out) — «первым пришёл — первым ушёл». + +**Основные операции:** + +enqueue(x) (или push) — добавление элемента x в конец очереди. +dequeue() (или pop) — удаление и возврат элемента из начала очереди. +peek() — возврат элемента из начала очереди без удаления. +isEmpty() — проверка очереди на пустоту. +**Реализация на односвязном списке с указателем на хвост:** + +**Для эффективного добавления в конец необходимо хранить два указателя:** head (начало очереди) и tail (конец очереди). + +enqueue(x): Создать новый узел new_node. Если очередь пуста, установить head = tail = new_node. Иначе: установить tail.next = new_node, затем переместить tail на new_node. + +dequeue(): Если очередь пуста — ошибка. Иначе: сохранить значение head.data, переместить голову на head.next. + +**Важно:** если после этого голова стала null, то и tail нужно установить в null (очередь опустела). + +**Сложность операций:** enqueue, dequeue, peek, isEmpty выполняются за O(1). + +### **Дек (Deque — Double-Ended Queue)** +**Дек** — это двусторонняя очередь, позволяющая добавлять и удалять элементы как в начале, так и в конце. + +**Основные операции:** + +pushFront(x) — добавление в начало. +pushBack(x) — добавление в конец. +popFront() — удаление из начала. +popBack() — удаление из конца. +peekFront(), peekBack() — просмотр начала/конца. + +**Реализация на двусвязном списке:** + +Для эффективного удаления с конца (popBack) односвязного списка недостаточно, так как у его последнего элемента нет ссылки на предыдущий. Поэтому дек оптимально реализуется на **двусвязном списке** с двумя указателями: head и tail. * **pushFront(x):** Аналогично добавлению в начало двусвязного списка. Установить связи между new_node и head. * **pushBack(x):** Аналогично добавлению в конец двусвязного списка. Установить связи между tail и new_node. * **popBack():** Если дек не пуст, переместить tail на tail.prev, отсечь старый хвост. Корректно обработать случай, когда в деке只有一个 элемент. * **Сложность операций:** Все основные операции (pushFront, pushBack, popFront, popBack) выполняются за O(1). + +**Сравнение реализаций на списках и массивах** + +| Критерий | Реализация на списках | Реализация на массивах (динамических) | +|:---|:---|:---| +| **Сложность операций** | `pushBack`/`popBack`, `pushFront`/`popFront` — O(1) | `pushBack`/`popBack` — O(1)*, `pushFront`/`popFront` — O(n) | +| **Память** | Больше: память на хранение указателей. | Меньше: память только на данные (но может быть избыточное выделение). | +| **Локализация данных** | Плохая: узлы в случайных местах памяти (кэш-промахи). | Отличная: данные лежат рядом (кэш-дружественность). | +| **Динамичность** | Истинно динамическая: каждый элемент выделяется отдельно. | Динамическая с резервированием: требует периодического дорогого копирования (reallocation). | + + +**Вывод:** Реализация стека, очереди и дека на связных списках является более универсальной и надёжной с точки зрения сложности операций, так как не требует операций копирования и расширения массива. Она гарантирует **константное время** выполнения для всех ключевых операций. Однако она проигрывает в потреблении памяти и скорости доступа из-за плохой локализации данных. Реализация на массивах (особенно для стека и очереди с кольцевой организацией) часто быстрее на практике для задач, где размер данных大致 известен, благодаря кэш-дружественности. + + +### **Задание 1** + +```python +class BaseStack: + """Базовый класс для стека""" + def push(self, item): + raise NotImplementedError("Метод push должен быть реализован") + + def pop(self): + raise NotImplementedError("Метод pop должен быть реализован") + + def peek(self): + raise NotImplementedError("Метод peek должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +class BaseQueue: + """Базовый класс для очереди""" + def enqueue(self, item): + raise NotImplementedError("Метод enqueue должен быть реализован") + + def dequeue(self): + raise NotImplementedError("Метод dequeue должен быть реализован") + + def front(self): + raise NotImplementedError("Метод front должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +class BaseDeque: + """Базовый класс для дека""" + def add_front(self, item): + raise NotImplementedError("Метод add_front должен быть реализован") + + def add_rear(self, item): + raise NotImplementedError("Метод add_rear должен быть реализован") + + def remove_front(self): + raise NotImplementedError("Метод remove_front должен быть реализован") + + def remove_rear(self): + raise NotImplementedError("Метод remove_rear должен быть реализован") + + def peek_front(self): + raise NotImplementedError("Метод peek_front должен быть реализован") + + def peek_rear(self): + raise NotImplementedError("Метод peek_rear должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +# 1. Стек на основе массива +class ArrayStack(BaseStack): + def __init__(self): + self._items = [] + + def push(self, item): + """Добавляет элемент на вершину стека""" + self._items.append(item) + + def pop(self): + """Удаляет и возвращает элемент с вершины стека""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._items.pop() + + def peek(self): + """Возвращает элемент с вершины стека без удаления""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._items[-1] + + def is_empty(self): + """Проверяет, пуст ли стек""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в стеке""" + return len(self._items) + + def __str__(self): + return f"ArrayStack({self._items})" + + +# 2. Стек на основе связного списка +class Node: + """Узел связного списка""" + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedListStack(BaseStack): + def __init__(self): + self._top = None + self._size = 0 + + def push(self, item): + """Добавляет элемент на вершину стека""" + new_node = Node(item) + new_node.next = self._top + self._top = new_node + self._size += 1 + + def pop(self): + """Удаляет и возвращает элемент с вершины стека""" + if self.is_empty(): + raise IndexError("Стек пуст") + + data = self._top.data + self._top = self._top.next + self._size -= 1 + return data + + def peek(self): + """Возвращает элемент с вершины стека без удаления""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._top.data + + def is_empty(self): + """Проверяет, пуст ли стек""" + return self._top is None + + def size(self): + """Возвращает количество элементов в стеке""" + return self._size + + def __str__(self): + items = [] + current = self._top + while current: + items.append(current.data) + current = current.next + return f"LinkedListStack({items})" + + +# 3. Очередь на основе массива +class ArrayQueue(BaseQueue): + def __init__(self): + self._items = [] + + def enqueue(self, item): + """Добавляет элемент в конец очереди""" + self._items.append(item) + + def dequeue(self): + """Удаляет и возвращает элемент из начала очереди""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._items.pop(0) + + def front(self): + """Возвращает элемент из начала очереди без удаления""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._items[0] + + def is_empty(self): + """Проверяет, пуста ли очередь""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в очереди""" + return len(self._items) + + def __str__(self): + return f"ArrayQueue({self._items})" + + +# 4. Очередь на основе связного списка +class LinkedListQueue(BaseQueue): + def __init__(self): + self._front = None + self._rear = None + self._size = 0 + + def enqueue(self, item): + """Добавляет элемент в конец очереди""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + self._rear.next = new_node + self._rear = new_node + + self._size += 1 + + def dequeue(self): + """Удаляет и возвращает элемент из начала очереди""" + if self.is_empty(): + raise IndexError("Очередь пуста") + + data = self._front.data + self._front = self._front.next + + if self._front is None: + self._rear = None + + self._size -= 1 + return data + + def front(self): + """Возвращает элемент из начала очереди без удаления""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._front.data + + def is_empty(self): + """Проверяет, пуста ли очередь""" + return self._front is None + + def size(self): + """Возвращает количество элементов в очереди""" + return self._size + + def __str__(self): + items = [] + current = self._front + while current: + items.append(current.data) + current = current.next + return f"LinkedListQueue({items})" + + +# 5. Дек на основе массива +class ArrayDeque(BaseDeque): + def __init__(self): + self._items = [] + + def add_front(self, item): + """Добавляет элемент в начало дека""" + self._items.insert(0, item) + + def add_rear(self, item): + """Добавляет элемент в конец дека""" + self._items.append(item) + + def remove_front(self): + """Удаляет и возвращает элемент из начала дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items.pop(0) + + def remove_rear(self): + """Удаляет и возвращает элемент из конца дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items.pop() + + def peek_front(self): + """Возвращает элемент из начала дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items[0] + + def peek_rear(self): + """Возвращает элемент из конца дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items[-1] + + def is_empty(self): + """Проверяет, пуст ли дек""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в деке""" + return len(self._items) + + def __str__(self): + return f"ArrayDeque({self._items})" + + +# 6. Дек на основе связного списка +class LinkedListDeque(BaseDeque): + def __init__(self): + self._front = None + self._rear = None + self._size = 0 + + def add_front(self, item): + """Добавляет элемент в начало дека""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + new_node.next = self._front + self._front = new_node + + self._size += 1 + + def add_rear(self, item): + """Добавляет элемент в конец дека""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + self._rear.next = new_node + self._rear = new_node + + self._size += 1 + + def remove_front(self): + """Удаляет и возвращает элемент из начала дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + + data = self._front.data + self._front = self._front.next + + if self._front is None: + self._rear = None + + self._size -= 1 + return data + + def remove_rear(self): + """Удаляет и возвращает элемент из конца дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + + # Если в деке только один элемент + if self._front == self._rear: + data = self._front.data + self._front = self._rear = None + self._size -= 1 + return data + + # Находим предпоследний элемент + current = self._front + while current.next != self._rear: + current = current.next + + data = self._rear.data + self._rear = current + self._rear.next = None + self._size -= 1 + return data + + def peek_front(self): + """Возвращает элемент из начала дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._front.data + + def peek_rear(self): + """Возвращает элемент из конца дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._rear.data + + def is_empty(self): + """Проверяет, пуст ли дек""" + return self._front is None + + def size(self): + """Возвращает количество элементов в деке""" + return self._size + + def __str__(self): + items = [] + current = self._front + while current: + items.append(current.data) + current = current.next + return f"LinkedListDeque({items})" + + +# Демонстрация работы всех структур данных +if __name__ == "__main__": + print("=== Демонстрация работы структур данных ===\n") + + # 1. Стек на массиве + print("1. Стек на основе массива:") + stack1 = ArrayStack() + stack1.push(1) + stack1.push(2) + stack1.push(3) + print(f" После добавления 1,2,3: {stack1}") + print(f" Верхний элемент: {stack1.peek()}") + print(f" Удалён: {stack1.pop()}") + print(f" Стек после удаления: {stack1}") + print(f" Размер: {stack1.size()}") + print(f" Пуст ли: {stack1.is_empty()}\n") + + # 2. Стек на связном списке + print("2. Стек на основе связного списка:") + stack2 = LinkedListStack() + stack2.push('a') + stack2.push('b') + stack2.push('c') + print(f" После добавления 'a','b','c': {stack2}") + print(f" Верхний элемент: {stack2.peek()}") + print(f" Удалён: {stack2.pop()}") + print(f" Стек после удаления: {stack2}\n") + + # 3. Очередь на массиве + print("3. Очередь на основе массива:") + queue1 = ArrayQueue() + queue1.enqueue(10) + queue1.enqueue(20) + queue1.enqueue(30) + print(f" После добавления 10,20,30: {queue1}") + print(f" Первый элемент: {queue1.front()}") + print(f" Удалён: {queue1.dequeue()}") + print(f" Очередь после удаления: {queue1}\n") + + # 4. Очередь на связном списке + print("4. Очередь на основе связного списка:") + queue2 = LinkedListQueue() + queue2.enqueue('x') + queue2.enqueue('y') + queue2.enqueue('z') + print(f" После добавления 'x','y','z': {queue2}") + print(f" Первый элемент: {queue2.front()}") + print(f" Удалён: {queue2.dequeue()}") + print(f" Очередь после удаления: {queue2}\n") + + # 5. Дек на массиве + print("5. Дек на основе массива:") + deque1 = ArrayDeque() + deque1.add_front(1) + deque1.add_rear(2) + deque1.add_front(0) + deque1.add_rear(3) + print(f" После добавления: {deque1}") + print(f" Первый элемент: {deque1.peek_front()}") + print(f" Последний элемент: {deque1.peek_rear()}") + print(f" Удалён спереди: {deque1.remove_front()}") + print(f" Удалён сзади: {deque1.remove_rear()}") + print(f" Дек после удалений: {deque1}\n") + + # 6. Дек на связном списке + print("6. Дек на основе связного списка:") + deque2 = LinkedListDeque() + deque2.add_front(100) + deque2.add_rear(200) + deque2.add_front(50) + deque2.add_rear(300) + print(f" После добавления: {deque2}") + print(f" Первый элемент: {deque2.peek_front()}") + print(f" Последний элемент: {deque2.peek_rear()}") + print(f" Удалён спереди: {deque2.remove_front()}") + print(f" Удалён сзади: {deque2.remove_rear()}") + print(f" Дек после удалений: {deque2}") +``` + +### Сводная таблица временной сложности операций + +| Структура | Добавление | Удаление | Просмотр | Пустота | Размер | +|-----------|------------|----------|----------|---------|--------| +| **ArrayStack** | O(1)* | O(1) | O(1) | O(1) | O(1) | +| **LinkedListStack** | O(1) | O(1) | O(1) | O(1) | O(1) | +| **ArrayQueue** | O(1)* | O(n) | O(1) | O(1) | O(1) | +| **LinkedListQueue** | O(1) | O(1) | O(1) | O(1) | O(1) | +| **ArrayDeque** | O(n)/O(1)* | O(n)/O(1) | O(1) | O(1) | O(1) | +| **LinkedListDeque** | O(1)/O(1) | O(1)/O(n) | O(1) | O(1) | O(1) | + +### Условные обозначения: + +- **\*** - амортизированная сложность +- **Для деков** - сложность указана в формате **спереди/сзади** + - ArrayDeque: add_front/remove_front **O(n)**, add_rear/remove_rear **O(1)** + - LinkedListDeque: add_front/remove_front **O(1)**, add_rear **O(1)**, remove_rear **O(n)** + +### Ключевые выводы: + +1. **Стеки** эффективны в обеих реализациях +2. **Очереди** лучше реализовывать на связных списках +3. **Деки** имеют компромиссы в зависимости от реализации +4. Все структуры имеют O(1) для проверки пустоты и размера + + +### **Задание 2** + +```python +def check_brackets(bracket_string): + """ + Проверяет своевременность закрытия скобок в строке символов + """ + stack = [] + bracket_pairs = {')': '(', ']': '[', '}': '{'} + + for char in bracket_string: + if char in '([{': + stack.append(char) + elif char in ')]}': + if not stack: + return False + if stack[-1] == bracket_pairs[char]: + stack.pop() + else: + return False + + return len(stack) == 0 + + +def run_tests(): + """Запуск 5 тестов""" + tests = [ + # Тест 1: Простые корректные скобки + ("()", True, "Простые круглые скобки"), + + # Тест 2: Смешанные корректные скобки + ("()[]{}", True, "Разные типы скобок"), + + # Тест 3: Вложенные корректные скобки + ("([{}])", True, "Вложенные скобки"), + + # Тест 4: Незакрытая скобка + ("(()", False, "Незакрытая круглая скобка"), + + # Тест 5: Несоответствие скобок + ("([)]", False, "Неправильный порядок скобок") + ] + + print("ТЕСТИРОВАНИЕ ПРОВЕРКИ СКОБОК") + print("=" * 40) + + for i, (test_string, expected, description) in enumerate(tests, 1): + result = check_brackets(test_string) + status = "✓ ПРОЙДЕН" if result == expected else "✗ ОШИБКА" + + print(f"Тест {i}: {description}") + print(f"Строка: '{test_string}'") + print(f"Результат: {result} (ожидалось: {expected})") + print(f"Статус: {status}") + print("-" * 40) + + +def main(): + """Основная функция""" + run_tests() + + +if __name__ == "__main__": + main() +``` + +### Анализ сложности алгоритма проверки скобок + +### Детализация операций + +| Операция | Сложность | Примечания | +|----------|-----------|------------| +| Создание stack | O(1) | Инициализация пустого списка | +| Создание bracket_pairs | O(1) | Словарь фиксированного размера | +| Цикл for | O(n) | Проход по всем n символам | +| Проверка `char in '([{'` | O(1) | Поиск в строке длины 3 | +| stack.append() | O(1)* | Амортизированная константа | +| stack.pop() | O(1) | Удаление с конца | +| stack[-1] | O(1) | Доступ к последнему элементу | +| bracket_pairs[char] | O(1) | Поиск в словаре | +| len(stack) == 0 | O(1) | Проверка длины списка | + +### Пространственная сложность: O(n) + +- **В худшем случае** (только открывающие скобки): стек может содержать до **n** элементов +- **Словарь bracket_pairs**: занимает O(1) памяти (фиксированный размер) + +### Анализ случаев + +### Худший случай +**Строка**: `"((((((((("` +- **Время**: O(n) +- **Память**: O(n) + +### Лучший случай +**Строка**: `")"` +- **Время**: O(1) - досрочный выход +- **Память**: O(1) + +### Средний случай +**Сбалансированная строка скобок** +- **Время**: O(n) +- **Память**: O(n/2) ≈ O(n) + +### Итоговая таблица сложности + +| Метрика | Сложность | Обоснование | +|---------|-----------|-------------| +| **Временная** | O(n) | Один проход по строке длиной n | +| **Пространственная** | O(n) | В худшем случае стек размером n | +| **Лучший случай** | O(1) | Некорректная скобка в начале | +| **Худший случай** | O(n) | Все скобки открывающие | + +### Вывод + +Алгоритм оптимален для данной задачи, так как требует только одного прохода по строке и минимальной дополнительной памяти. + +*Примечание: * - амортизированная константная сложность* + + +### **Задание 3** + +```python +def evaluate_postfix(expression): + """ + Вычисляет значение выражения в обратной польской записи + """ + stack = [] + operators = { + '+': lambda x, y: x + y, + '-': lambda x, y: x - y, + '*': lambda x, y: x * y, + '/': lambda x, y: x / y + } + + for char in expression.split(): + if char.isdigit(): + stack.append(int(char)) + elif char in operators: + if len(stack) < 2: + raise ValueError(f"Недостаточно операндов для операции '{char}'") + + operand2 = stack.pop() + operand1 = stack.pop() + result = operators[char](operand1, operand2) + stack.append(result) + else: + raise ValueError(f"Недопустимый символ: '{char}'") + + if len(stack) != 1: + raise ValueError(f"Некорректное выражение. В стеке осталось {len(stack)} элементов: {stack}") + + return stack[0] + + +def run_five_tests(): + """Запуск 5 тестов""" + tests = [ + # Тест 1: Простое сложение + ("2 3 +", 5, "Простое сложение: 2 + 3"), + + # Тест 2: Умножение и сложение + ("3 4 2 * +", 11, "Умножение и сложение: 3 + 4*2"), + + # Тест 3: Сложное выражение со скобками (в RPN) + ("5 1 2 + 4 * +", 17, "Сложное выражение: 5 + (1+2)*4"), + + # Тест 4: Вычитание и деление + ("8 4 - 2 /", 2, "Вычитание и деление: (8-4)/2"), + + # Тест 5: Множественные операции + ("9 3 / 1 1 + *", 6, "Множественные операции: (9/3)*(1+1)") + ] + + print("5 ТЕСТОВ ВЫЧИСЛЕНИЯ ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ") + print("=" * 50) + + for i, (expression, expected, description) in enumerate(tests, 1): + try: + result = evaluate_postfix(expression) + status = "✓ ПРОЙДЕН" if result == expected else "✗ ОШИБКА" + + print(f"Тест {i}: {description}") + print(f"Выражение: '{expression}'") + print(f"Результат: {result} (ожидалось: {expected})") + print(f"Статус: {status}") + print("-" * 40) + + except Exception as e: + print(f"Тест {i}: {description}") + print(f"Выражение: '{expression}'") + print(f"Ошибка: {e}") + print(f"Статус: ✗ ОШИБКА") + print("-" * 40) + + +def main(): + """Основная функция""" + run_five_tests() + + +if __name__ == "__main__": + main() +``` + +### Анализ сложности алгоритма вычисления обратной польской записи + +### Детализация операций + +| Операция | Сложность | Примечания | +|----------|-----------|------------| +| `expression.split()` | O(m) | m - длина строки выражения | +| Цикл for | O(n) | Проход по n токенам | +| `char.isdigit()` | O(1) | Проверка строки на цифры | +| `stack.append()` | O(1)* | Амортизированная константа | +| `stack.pop()` | O(1) | Удаление с конца | +| `char in operators` | O(1) | Поиск в словаре из 4 элементов | +| `operators[char]()` | O(1) | Вызов лямбда-функции | +| `len(stack)` | O(1) | Проверка длины списка | +| `int(char)` | O(1) | Конвертация строки в число | + +### Пространственная сложность: O(n) + +- **Стек**: в худшем случае может содержать до n/2 элементов ≈ O(n) +- **Словарь operators**: O(1) - фиксированный размер +- **Временные переменные**: O(1) + +### Анализ случаев + +### Худший случай +**Выражение**: `"1 2 3 4 5 6 7 8 9 10 + + + + + + + + +"` +- **Время**: O(n) - все операции в конце +- **Память**: O(n) - стек растет линейно + +### Лучший случай +**Выражение**: `"2 3 +"` +- **Время**: O(n) - минимальное выражение +- **Память**: O(1) - мало элементов в стеке + +### Средний случай +**Сбалансированное выражение** +- **Время**: O(n) +- **Память**: O(n/2) ≈ O(n) + +### Итоговая таблица сложности + +| Метрика | Сложность | Обоснование | +|---------|-----------|-------------| +| **Временная** | O(n) | Один проход по n токенам | +| **Пространственная** | O(n) | Стек в худшем случае O(n) | +| **Лучший случай** | O(n) | Минимальное выражение | +| **Худший случай** | O(n) | Все операнды сначала, операции потом | +| **Split операция** | O(m) | m - длина исходной строки | + +### Вывод + +Алгоритм оптимален для вычисления обратной польской записи. Временная сложность линейна относительно количества токенов, что является наилучшим возможным результатом для данной задачи. + +*Примечание: n - количество токенов в выражении после split(), m - длина исходной строки выражения* + + +### **Задание 4** + +```python +def infix_to_postfix(expression): + """ + Переводит математическое выражение из инфиксной в постфиксную форму + """ + precedence = {'+': 1, '-': 1, '*': 2, '/': 2} + stack = [] + output = [] + + for token in expression: + if token.isalnum(): # Операнд (число или переменная) + output.append(token) + elif token == '(': + stack.append(token) + elif token == ')': + while stack and stack[-1] != '(': + output.append(stack.pop()) + stack.pop() # Удаляем '(' + else: # Оператор + while (stack and stack[-1] != '(' and + precedence.get(token, 0) <= precedence.get(stack[-1], 0)): + output.append(stack.pop()) + stack.append(token) + + while stack: + output.append(stack.pop()) + + return ' '.join(output) + + +def run_five_tests(): + """Запуск 5 тестов перевода из инфиксной в постфиксную форму""" + tests = [ + # Тест 1: Простое сложение + ("a+b", "a b +", "Простое сложение"), + + # Тест 2: Приоритет умножения над сложением + ("a+b*c", "a b c * +", "Приоритет умножения"), + + # Тест 3: Выражение со скобками + ("(a+b)*c", "a b + c *", "Сложение в скобках с умножением"), + + # Тест 4: Сложное выражение со скобками + ("a+(b+c)*d", "a b c + d * +", "Сложное выражение со скобками"), + + # Тест 5: Множественные операции + ("a*b+c*d", "a b * c d * +", "Множественное умножение и сложение") + ] + + print("5 ТЕСТОВ ПЕРЕВОДА ИНФИКС → ПОСТФИКС") + print("=" * 50) + + for i, (infix, expected_postfix, description) in enumerate(tests, 1): + result = infix_to_postfix(infix) + status = "✓ ПРОЙДЕН" if result == expected_postfix else "✗ ОШИБКА" + + print(f"Тест {i}: {description}") + print(f"Инфиксная: {infix}") + print(f"Постфиксная: {result}") + print(f"Ожидалось: {expected_postfix}") + print(f"Статус: {status}") + print("-" * 40) + + +def main(): + """Основная функция""" + run_five_tests() + + +if __name__ == "__main__": + main() +``` + +### Анализ сложности алгоритма преобразования инфикс → постфикс + +### Детализация операций + +| Операция | Сложность | Примечания | +|----------|-----------|------------| +| Инициализация структур | O(1) | Словарь, два списка | +| Цикл for по expression | O(n) | n символов в выражении | +| `token.isalnum()` | O(1) | Проверка одного символа | +| `output.append()` | O(1)* | Амортизированная константа | +| `stack.append()` | O(1)* | Амортизированная константа | +| `stack.pop()` | O(1) | Удаление с конца | +| `stack[-1]` | O(1) | Доступ к вершине стека | +| `precedence.get()` | O(1) | Поиск в словаре из 4 элементов | +| Вложенные while циклы | O(n) | Суммарно O(n) операций | +| `' '.join(output)` | O(n) | Объединение n элементов | + +### Пространственная сложность: O(n) + +- **output**: O(n) - содержит все токены выражения +- **stack**: O(n) - в худшем случае все операторы в стеке +- **precedence**: O(1) - фиксированный словарь + +### Анализ случаев + +### Худший случай +**Выражение**: `"a+b*c-d/e*f+g"` +- **Время**: O(n) +- **Память**: O(n) + +### Лучший случай +**Выражение**: `"a"` +- **Время**: O(n) +- **Память**: O(1) + +### Средний случай +**Сбалансированное выражение** +- **Время**: O(n) +- **Память**: O(n) + +### Итоговая таблица сложности + +| Метрика | Сложность | Обоснование | +|---------|-----------|-------------| +| **Временная** | O(n) | Линейный проход + амортизированные операции | +| **Пространственная** | O(n) | Выходной список и стек O(n) | +| **Лучший случай** | O(n) | Минимальное выражение | +| **Худший случай** | O(n) | Сложное выражение с приоритетами | + +### Вывод + +Алгоритм Шантинг-ярда оптимален для преобразования инфиксной в постфиксную запись с линейной временной и пространственной сложностью O(n). + + +### Контрольные вопросы + +#### 1. Определение стека и принцип LIFO +**Стек** - это абстрактный тип данных, представляющий коллекцию элементов с ограниченным доступом. +**Принцип LIFO** (Last-In, First-Out) - последний добавленный элемент извлекается первым. + +#### 2. Определение очереди и принцип FIFO +**Очередь** - это абстрактный тип данных, представляющий упорядоченную коллекцию элементов. +**Принцип FIFO** (First-In, First-Out) - первый добавленный элемент извлекается первым. + +#### 3. Определение дека и его отличие +**Дек** (double-ended queue) - это двусторонняя очередь, позволяющая добавлять и удалять элементы с обоих концов. +**Отличие**: Дек обобщает возможности стека и очереди, предоставляя операции работы с обоими концами. + +#### 4. Основные операции АТД +**Стек**: +- `push` - добавление на вершину +- `pop` - удаление с вершины +- `peek` - просмотр вершины +- `isEmpty` - проверка на пустоту + +**Очередь**: +- `enqueue` - добавление в конец +- `dequeue` - удаление из начала +- `peek` - просмотр начала +- `isEmpty` - проверка на пустоту + +**Дек**: +- `pushFront` - добавление в начало +- `pushBack` - добавление в конец +- `popFront` - удаление из начала +- `popBack` - удаление из конца +- `peekFront` - просмотр начала +- `peekBack` - просмотр конца +- `isEmpty` - проверка на пустоту + +#### 5. Односвязный список для стека +Односвязный список идеально подходит, потому что все операции стека выполняются с одного конца. +**Голова списка** становится вершиной стека, что позволяет выполнять операции за O(1). + +#### 6. Алгоритм push для стека на списке + +1. Создать новый узел с данными +2. Установить next нового узла = текущая голова +3. Назначить голову = новый узел + +#### 7.Алгоритм pop для стека на списке + + + +1. Если стек пуст (head == null) → ошибка +2. Сохранить текущую голову во временной переменной +3. Назначить голову = head.next +4. Вернуть данные из сохраненного узла +#### 8. Необходимость двух указателей для очереди +Хранить head и tail необходимо для эффективного добавления в конец. +Если хранить только head: операция enqueue будет O(n), так как потребуется проход по всему списку до последнего элемента. + +#### 9. Алгоритм enqueue для очереди с tail +pseudocode +1. Создать новый узел с данными +2. Если очередь пуста (head == null): + - head = новый узел + - tail = новый узел +3. Иначе: + - tail.next = новый узел + - tail = новый узел +#### 10. Алгоритм dequeue и важность проверки +pseudocode +1. Если очередь пуста (head == null) → ошибка +2. Сохранить текущий head во временной переменной +3. Назначить head = head.next +4. Если head == null (очередь стала пустой): + - tail = null +5. Вернуть данные из сохраненного узла +Важность проверки: если не обновить tail при опустошении очереди, он будет указывать на удаленный узел. + +#### 11. Двусвязный список для дека +Двусвязный список позволяет эффективно удалять элементы с конца за O(1). В односвязном списке popBack требует O(n) для нахождения предпоследнего элемента. + +#### 12. Алгоритм popBack для дека +pseudocode +1. Если дек пуст (tail == null) → ошибка +2. Сохранить текущий tail во временной переменной +3. Назначить tail = tail.prev +4. Если tail == null (остался один элемент): + - head = null +5. Иначе: + - tail.next = null +6. Вернуть данные из сохраненного узла +#### 13. Преимущества и недостатки стека на массиве +Преимущества: + +Лучшая локальность кэша + +Меньше накладных расходов памяти + +Недостатки: + +Возможная реаллокация с сложностью O(n) + +Ограниченный размер (если не динамический) + +#### 14. Кольцевой буфер для очереди +Кольцевой буфер - массив, в котором начало и конец замыкаются в кольцо. Позволяет эффективно использовать память и реализовать очередь с O(1) операциями без сдвигов элементов. + +#### 15. Сложность операций дека на массиве +pushFront и popFront имеют сложность O(n) на обычном массиве, потому что требуют сдвига всех элементов для освобождения/заполнения позиции в начале. + +#### 16. Таблица асимптотической сложности +| Операция | Стек (список) | Очередь (список) | Дек (двусвязный список) | Дек (массив*) | +|----------|---------------|------------------|-------------------------|---------------| +| push/enqueue/pushBack | O(1) | O(1) | O(1) | O(1) | +| pop/dequeue/popBack | O(1) | O(1) | O(1) | O(1) | +| pushFront | — | — | O(1) | O(1) | +| popFront | — | — | O(1) | O(1) | +| peek | O(1) | O(1) | O(1) | O(1) | +| isEmpty | O(1) | O(1) | O(1) | O(1) | +*Амортизированная сложность + +#### 17. Константная сложность операций дека +Все операции дека на двусвязном списке имеют O(1), потому что: + +Доступ к обоим концам через head и tail + +Обновление связей происходит за константное время + +Не требуется проход по списку + +#### 18. Примеры использования стека +Стек вызовов функций + +Проверка скобочных последовательностей + +Алгоритм обхода в глубину (DFS) + +#### 19. Примеры использования очереди +Очередь печати + +Очередь задач в процессоре + +Алгоритм обхода в ширину (BFS) + +#### 20. Пример использования дека +Система истории браузера: + +pushBack - добавление новой страницы + +popBack - кнопка "Назад" + +pushFront - кнопка "Вперед" (при возврате) + +#### 21. Проверка скобочной последовательности + +1. Создать пустой стек +2. Для каждого символа в строке: + - Если открывающая скобка → push в стек + - Если закрывающая скобка: + * Если стек пуст → ошибка + * Если pop из стека ≠ парная скобка → ошибка +3. Если стек не пуст → ошибка +#### 22. Роль очереди в BFS +Очередь хранит вершины для обработки в порядке увеличения расстояния от стартовой вершины, обеспечивая обход "слоями". + +#### 23. Порядок извлечения из стека +Операции: push(1), push(2), pop(), push(3), push(4), pop(), pop() +Порядок извлечения: 2, 4, 3 + +#### 24. Порядок извлечения из очереди +Операции: enqueue(1), enqueue(2), dequeue(), enqueue(3), enqueue(4), dequeue(), dequeue() +Порядок извлечения: 1, 2, 3 + +#### 25. Ошибка без обновления tail +Если при dequeue не обновлять tail при опустошении очереди, tail продолжит указывать на удаленный узел, что приведет к ошибкам при последующих операциях. + +#### 26. Сложность push в стеке на массиве +В худшем случае O(n) из-за реаллокации, когда массив заполнен и требуется: + +Выделение нового массива + +Копирование всех элементов + +#### 27. Преимущества по памяти +Массив: меньше накладных расходов, нет указателей +Список: гибкое использование памяти, нет фрагментации + +#### 28. Критерии выбора реализации +Списки предпочтительнее когда: + +Неизвестен максимальный размер + +Важна предсказуемость операций + +Частое изменение размера + +Массивы предпочтительнее когда: + +Известен максимальный размер + +Важна производительность и локальность кэша + +Память ограничена + + +```python + +``` From 65923d6986420e98d2b2c6384bfb847bf5c2b724 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 20 Oct 2025 23:06:32 +0300 Subject: [PATCH 15/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_04/Untitled.md | 328 +++++++++++++++++++++++++--------------- 1 file changed, 206 insertions(+), 122 deletions(-) diff --git a/labs/lab_04/Untitled.md b/labs/lab_04/Untitled.md index 3523ec0..683e7c1 100644 --- a/labs/lab_04/Untitled.md +++ b/labs/lab_04/Untitled.md @@ -29,7 +29,7 @@ jupyter: Линейные списки являются фундаментальной структурой данных, на основе которой эффективно реализуются другие абстрактные типы данных (АТД). В данном разделе рассматривается реализация стека, очереди и дека с использованием как односвязных, так и двусвязных списков. - + ### **Стек (Stack)** **Стек** — это структура данных, работающая по принципу **LIFO (Last-In, First-Out)** — «последним пришёл — первым ушёл». @@ -163,7 +163,7 @@ class BaseDeque: raise NotImplementedError("Метод size должен быть реализован") -# 1. Стек на основе массива +""" 1. Стек на основе массива""" class ArrayStack(BaseStack): def __init__(self): self._items = [] @@ -196,9 +196,8 @@ class ArrayStack(BaseStack): return f"ArrayStack({self._items})" -# 2. Стек на основе связного списка +""" 2. Стек на основе связного списка""" class Node: - """Узел связного списка""" def __init__(self, data): self.data = data self.next = None @@ -249,7 +248,7 @@ class LinkedListStack(BaseStack): return f"LinkedListStack({items})" -# 3. Очередь на основе массива +""" 3. Очередь на основе массива """ class ArrayQueue(BaseQueue): def __init__(self): self._items = [] @@ -282,7 +281,7 @@ class ArrayQueue(BaseQueue): return f"ArrayQueue({self._items})" -# 4. Очередь на основе связного списка +""" 4. Очередь на основе связного списка""" class LinkedListQueue(BaseQueue): def __init__(self): self._front = None @@ -338,7 +337,7 @@ class LinkedListQueue(BaseQueue): return f"LinkedListQueue({items})" -# 5. Дек на основе массива +""" 5. Дек на основе массива""" class ArrayDeque(BaseDeque): def __init__(self): self._items = [] @@ -387,7 +386,7 @@ class ArrayDeque(BaseDeque): return f"ArrayDeque({self._items})" -# 6. Дек на основе связного списка +""" 6. Дек на основе связного списка """ class LinkedListDeque(BaseDeque): def __init__(self): self._front = None @@ -437,14 +436,14 @@ class LinkedListDeque(BaseDeque): if self.is_empty(): raise IndexError("Дек пуст") - # Если в деке только один элемент + """Если в деке только один элемент""" if self._front == self._rear: data = self._front.data self._front = self._rear = None self._size -= 1 return data - # Находим предпоследний элемент + """Находим предпоследний элемент""" current = self._front while current.next != self._rear: current = current.next @@ -484,83 +483,173 @@ class LinkedListDeque(BaseDeque): return f"LinkedListDeque({items})" -# Демонстрация работы всех структур данных + if __name__ == "__main__": - print("=== Демонстрация работы структур данных ===\n") + print("=== ТЕСТИРОВАНИЕ СТРУКТУР ДАННЫХ ===\n") - # 1. Стек на массиве - print("1. Стек на основе массива:") + """1. Стек на массиве""" + print("1. Тестирование ArrayStack:") stack1 = ArrayStack() + + """Тест добавления""" stack1.push(1) stack1.push(2) stack1.push(3) - print(f" После добавления 1,2,3: {stack1}") - print(f" Верхний элемент: {stack1.peek()}") - print(f" Удалён: {stack1.pop()}") - print(f" Стек после удаления: {stack1}") - print(f" Размер: {stack1.size()}") - print(f" Пуст ли: {stack1.is_empty()}\n") - - # 2. Стек на связном списке - print("2. Стек на основе связного списка:") + assert str(stack1) == "ArrayStack([1, 2, 3])", "Ошибка добавления в стек" + + """Тест просмотра""" + assert stack1.peek() == 3, "Ошибка peek()" + + """ Тест удаления""" + assert stack1.pop() == 3, "Ошибка pop()" + assert stack1.size() == 2, "Ошибка размера после pop()" + + """Тест пустоты""" + assert not stack1.is_empty(), "Ошибка is_empty()" + + """Очистка и проверка пустого стека""" + stack1.pop() + stack1.pop() + assert stack1.is_empty(), "Стек должен быть пустым" + assert stack1.size() == 0, "Размер должен быть 0" + + print(" ✓ Все тесты ArrayStack пройдены\n") + + """ 2. Стек на связном списке """ + print("2. Тестирование LinkedListStack:") stack2 = LinkedListStack() + + """Тест добавления""" stack2.push('a') stack2.push('b') stack2.push('c') - print(f" После добавления 'a','b','c': {stack2}") - print(f" Верхний элемент: {stack2.peek()}") - print(f" Удалён: {stack2.pop()}") - print(f" Стек после удаления: {stack2}\n") + assert str(stack2) == "LinkedListStack(['c', 'b', 'a'])", "Ошибка добавления в связный стек" + + """ Тест просмотра""" + assert stack2.peek() == 'c', "Ошибка peek() в связном стеке" + + """Тест удаления """ + assert stack2.pop() == 'c', "Ошибка pop() в связном стеке" + assert stack2.size() == 2, "Ошибка размера после pop()" - # 3. Очередь на массиве - print("3. Очередь на основе массива:") + print(" Все тесты LinkedListStack пройдены\n") + + """ 3. Очередь на массиве""" + print("3. Тестирование ArrayQueue:") queue1 = ArrayQueue() + + """Тест добавления""" queue1.enqueue(10) queue1.enqueue(20) queue1.enqueue(30) - print(f" После добавления 10,20,30: {queue1}") - print(f" Первый элемент: {queue1.front()}") - print(f" Удалён: {queue1.dequeue()}") - print(f" Очередь после удаления: {queue1}\n") + assert str(queue1) == "ArrayQueue([10, 20, 30])", "Ошибка добавления в очередь" + + """Тест просмотра""" + assert queue1.front() == 10, "Ошибка front()" - # 4. Очередь на связном списке - print("4. Очередь на основе связного списка:") + """Тест удаления """ + assert queue1.dequeue() == 10, "Ошибка dequeue()" + assert queue1.size() == 2, "Ошибка размера после dequeue()" + assert queue1.front() == 20, "Ошибка front() после dequeue()" + + print(" Все тесты ArrayQueue пройдены\n") + + """4. Очередь на связном списке""" + print("4. Тестирование LinkedListQueue:") queue2 = LinkedListQueue() + + """Тест добавления""" queue2.enqueue('x') queue2.enqueue('y') queue2.enqueue('z') - print(f" После добавления 'x','y','z': {queue2}") - print(f" Первый элемент: {queue2.front()}") - print(f" Удалён: {queue2.dequeue()}") - print(f" Очередь после удаления: {queue2}\n") + assert str(queue2) == "LinkedListQueue(['x', 'y', 'z'])", "Ошибка добавления в связную очередь" - # 5. Дек на массиве - print("5. Дек на основе массива:") + """Тест просмотра""" + assert queue2.front() == 'x', "Ошибка front() в связной очереди" + + """Tест удаления""" + assert queue2.dequeue() == 'x', "Ошибка dequeue() в связной очереди" + assert queue2.size() == 2, "Ошибка размера после dequeue()" + assert queue2.front() == 'y', "Ошибка front() после dequeue()" + + print(" Все тесты LinkedListQueue пройдены\n") + + """5. Дек на массиве""" + print("5. Тестирование ArrayDeque:") deque1 = ArrayDeque() + + """Тест добавления спереди и сзади""" deque1.add_front(1) deque1.add_rear(2) deque1.add_front(0) deque1.add_rear(3) - print(f" После добавления: {deque1}") - print(f" Первый элемент: {deque1.peek_front()}") - print(f" Последний элемент: {deque1.peek_rear()}") - print(f" Удалён спереди: {deque1.remove_front()}") - print(f" Удалён сзади: {deque1.remove_rear()}") - print(f" Дек после удалений: {deque1}\n") - - # 6. Дек на связном списке - print("6. Дек на основе связного списка:") + assert str(deque1) == "ArrayDeque([0, 1, 2, 3])", "Ошибка добавления в дек" + + """Тест просмотра""" + assert deque1.peek_front() == 0, "Ошибка peek_front()" + assert deque1.peek_rear() == 3, "Ошибка peek_rear()" + + """Тест удаления""" + assert deque1.remove_front() == 0, "Ошибка remove_front()" + assert deque1.remove_rear() == 3, "Ошибка remove_rear()" + assert deque1.size() == 2, "Ошибка размера после удалений" + assert str(deque1) == "ArrayDeque([1, 2])", "Ошибка состояния дека после удалений" + + print(" Все тесты ArrayDeque пройдены\n") + + """6. Дек на связном списке""" + print("6. Тестирование LinkedListDeque:") deque2 = LinkedListDeque() + + """Тест добавления""" deque2.add_front(100) deque2.add_rear(200) deque2.add_front(50) deque2.add_rear(300) - print(f" После добавления: {deque2}") - print(f" Первый элемент: {deque2.peek_front()}") - print(f" Последний элемент: {deque2.peek_rear()}") - print(f" Удалён спереди: {deque2.remove_front()}") - print(f" Удалён сзади: {deque2.remove_rear()}") - print(f" Дек после удалений: {deque2}") + assert str(deque2) == "LinkedListDeque([50, 100, 200, 300])", "Ошибка добавления в связный дек" + + """ Тест просмотра""" + assert deque2.peek_front() == 50, "Ошибка peek_front() в связном деке" + assert deque2.peek_rear() == 300, "Ошибка peek_rear() в связном деке" + + """Тест удаления""" + assert deque2.remove_front() == 50, "Ошибка remove_front() в связном деке" + assert deque2.remove_rear() == 300, "Ошибка remove_rear() в связном деке" + assert deque2.size() == 2, "Ошибка размера после удалений" + assert str(deque2) == "LinkedListDeque([100, 200])", "Ошибка состояния связного дека после удалений" + + print(" Все тесты LinkedListDeque пройдены\n") + + """ 7. Тестирование исключений""" + print("7. Тестирование исключений:") + + """Тест пустого стека""" + empty_stack = ArrayStack() + try: + empty_stack.pop() + assert False, "Должно быть исключение при pop() пустого стека" + except IndexError: + pass #Ожидаемое поведение + + """Тест пустой очереди""" + empty_queue = ArrayQueue() + try: + empty_queue.dequeue() + assert False, "Должно быть исключение при dequeue() пустой очереди" + except IndexError: + pass #Ожидаемое поведение + + """Тест пустого дека""" + empty_deque = ArrayDeque() + try: + empty_deque.remove_front() + assert False, "Должно быть исключение при remove_front() пустого дека" + except IndexError: + pass #Ожидаемое поведение + + print(" Все тесты исключений пройдены\n") + + print("Все структуры данных работают корректно.") ``` ### Сводная таблица временной сложности операций @@ -616,19 +705,15 @@ def check_brackets(bracket_string): def run_tests(): """Запуск 5 тестов""" tests = [ - # Тест 1: Простые корректные скобки + ("()", True, "Простые круглые скобки"), - # Тест 2: Смешанные корректные скобки ("()[]{}", True, "Разные типы скобок"), - # Тест 3: Вложенные корректные скобки ("([{}])", True, "Вложенные скобки"), - # Тест 4: Незакрытая скобка ("(()", False, "Незакрытая круглая скобка"), - # Тест 5: Несоответствие скобок ("([)]", False, "Неправильный порядок скобок") ] @@ -637,7 +722,7 @@ def run_tests(): for i, (test_string, expected, description) in enumerate(tests, 1): result = check_brackets(test_string) - status = "✓ ПРОЙДЕН" if result == expected else "✗ ОШИБКА" + status = " ПРОЙДЕН" if result == expected else " ОШИБКА" print(f"Тест {i}: {description}") print(f"Строка: '{test_string}'") @@ -647,7 +732,6 @@ def run_tests(): def main(): - """Основная функция""" run_tests() @@ -745,44 +829,29 @@ def evaluate_postfix(expression): def run_five_tests(): - """Запуск 5 тестов""" + """Запуск 5 тестов """ tests = [ - # Тест 1: Простое сложение + ("2 3 +", 5, "Простое сложение: 2 + 3"), - # Тест 2: Умножение и сложение ("3 4 2 * +", 11, "Умножение и сложение: 3 + 4*2"), - # Тест 3: Сложное выражение со скобками (в RPN) ("5 1 2 + 4 * +", 17, "Сложное выражение: 5 + (1+2)*4"), - # Тест 4: Вычитание и деление ("8 4 - 2 /", 2, "Вычитание и деление: (8-4)/2"), - # Тест 5: Множественные операции ("9 3 / 1 1 + *", 6, "Множественные операции: (9/3)*(1+1)") ] - print("5 ТЕСТОВ ВЫЧИСЛЕНИЯ ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ") - print("=" * 50) + print("5 ТЕСТОВ ВЫЧИСЛЕНИЕ ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ") + print("=" * 60) for i, (expression, expected, description) in enumerate(tests, 1): - try: - result = evaluate_postfix(expression) - status = "✓ ПРОЙДЕН" if result == expected else "✗ ОШИБКА" - - print(f"Тест {i}: {description}") - print(f"Выражение: '{expression}'") - print(f"Результат: {result} (ожидалось: {expected})") - print(f"Статус: {status}") - print("-" * 40) - - except Exception as e: - print(f"Тест {i}: {description}") - print(f"Выражение: '{expression}'") - print(f"Ошибка: {e}") - print(f"Статус: ✗ ОШИБКА") - print("-" * 40) + result = evaluate_postfix(expression) + assert result == expected, f"Тест {i} не пройден: {description}. Ожидалось {expected}, получено {result}" + print(f"Тест {i} ПРОЙДЕН: {description}") + print(f" Выражение: '{expression}' = {result}") + def main(): @@ -862,15 +931,15 @@ def infix_to_postfix(expression): output = [] for token in expression: - if token.isalnum(): # Операнд (число или переменная) + if token.isalnum(): output.append(token) elif token == '(': stack.append(token) elif token == ')': while stack and stack[-1] != '(': output.append(stack.pop()) - stack.pop() # Удаляем '(' - else: # Оператор + stack.pop() + else: while (stack and stack[-1] != '(' and precedence.get(token, 0) <= precedence.get(stack[-1], 0)): output.append(stack.pop()) @@ -883,37 +952,52 @@ def infix_to_postfix(expression): def run_five_tests(): - """Запуск 5 тестов перевода из инфиксной в постфиксную форму""" - tests = [ - # Тест 1: Простое сложение - ("a+b", "a b +", "Простое сложение"), - - # Тест 2: Приоритет умножения над сложением - ("a+b*c", "a b c * +", "Приоритет умножения"), - - # Тест 3: Выражение со скобками - ("(a+b)*c", "a b + c *", "Сложение в скобках с умножением"), - - # Тест 4: Сложное выражение со скобками - ("a+(b+c)*d", "a b c + d * +", "Сложное выражение со скобками"), - - # Тест 5: Множественные операции - ("a*b+c*d", "a b * c d * +", "Множественное умножение и сложение") - ] - - print("5 ТЕСТОВ ПЕРЕВОДА ИНФИКС → ПОСТФИКС") + """Запуск 5 тестов перевода из инфиксной в постфиксную форму """ + print("5 ТЕСТОВ ПЕРЕВОДА ИНФИКС → ПОСТФИКС (") print("=" * 50) - for i, (infix, expected_postfix, description) in enumerate(tests, 1): - result = infix_to_postfix(infix) - status = "✓ ПРОЙДЕН" if result == expected_postfix else "✗ ОШИБКА" - - print(f"Тест {i}: {description}") - print(f"Инфиксная: {infix}") - print(f"Постфиксная: {result}") - print(f"Ожидалось: {expected_postfix}") - print(f"Статус: {status}") - print("-" * 40) + try: + result = infix_to_postfix("a+b") + assert result == "a b +", f"Ожидалось 'a b +', получено '{result}'" + print(" Тест 1 ПРОЙДЕН: Простое сложение") + print(f" a+b → {result}") + except AssertionError as e: + print(f" Тест 1 ОШИБКА: {e}") + + try: + result = infix_to_postfix("a+b*c") + assert result == "a b c * +", f"Ожидалось 'a b c * +', получено '{result}'" + print(" Тест 2 ПРОЙДЕН: Приоритет умножения") + print(f" a+b*c → {result}") + except AssertionError as e: + print(f" Тест 2 ОШИБКА: {e}") + + try: + result = infix_to_postfix("(a+b)*c") + assert result == "a b + c *", f"Ожидалось 'a b + c *', получено '{result}'" + print(" Тест 3 ПРОЙДЕН: Сложение в скобках с умножением") + print(f" (a+b)*c → {result}") + except AssertionError as e: + print(f" Тест 3 ОШИБКА: {e}") + + try: + result = infix_to_postfix("a+(b+c)*d") + assert result == "a b c + d * +", f"Ожидалось 'a b c + d * +', получено '{result}'" + print(" Тест 4 ПРОЙДЕН: Сложное выражение со скобками") + print(f" a+(b+c)*d → {result}") + except AssertionError as e: + print(f" Тест 4 ОШИБКА: {e}") + + try: + result = infix_to_postfix("a*b+c*d") + assert result == "a b * c d * +", f"Ожидалось 'a b * c d * +', получено '{result}'" + print(" Тест 5 ПРОЙДЕН: Множественное умножение и сложение") + print(f" a*b+c*d → {result}") + except AssertionError as e: + print(f" Тест 5 ОШИБКА: {e}") + + print("=" * 50) + print("ТЕСТИРОВАНИЕ ЗАВЕРШЕНО") def main(): @@ -1093,11 +1177,11 @@ pushFront и popFront имеют сложность O(n) на обычном м |----------|---------------|------------------|-------------------------|---------------| | push/enqueue/pushBack | O(1) | O(1) | O(1) | O(1) | | pop/dequeue/popBack | O(1) | O(1) | O(1) | O(1) | -| pushFront | — | — | O(1) | O(1) | -| popFront | — | — | O(1) | O(1) | +| pushFront | O(n) | O(1) | O(1) | O(1) | +| popFront | O(n) | O(1) | O(1) | O(1) | | peek | O(1) | O(1) | O(1) | O(1) | | isEmpty | O(1) | O(1) | O(1) | O(1) | -*Амортизированная сложность +*Амортизированная сложность(Идея — усреднить стоимость более «дорогих» операций по всей последовательности, чтобы средняя стоимость каждой операции оставалась постоянной или ниже.) #### 17. Константная сложность операций дека Все операции дека на двусвязном списке имеют O(1), потому что: From ca51378df678a27c1e9175cdd86ba80ddb5f2bcd Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Mon, 27 Oct 2025 13:44:03 +0300 Subject: [PATCH 16/19] lab 5 --- labs/lab_04/Untitled.md | 553 ++++++++++++++++++++ labs/lab_05/Laba_05_Asonov_.md | 918 +++++++++++++++++++++++++++++++++ 2 files changed, 1471 insertions(+) create mode 100644 labs/lab_05/Laba_05_Asonov_.md diff --git a/labs/lab_04/Untitled.md b/labs/lab_04/Untitled.md index 683e7c1..4578ede 100644 --- a/labs/lab_04/Untitled.md +++ b/labs/lab_04/Untitled.md @@ -652,6 +652,559 @@ if __name__ == "__main__": print("Все структуры данных работают корректно.") ``` +```python +class BaseStack: + """Базовый класс для стека""" + def push(self, item): + raise NotImplementedError("Метод push должен быть реализован") + + def pop(self): + raise NotImplementedError("Метод pop должен быть реализован") + + def peek(self): + raise NotImplementedError("Метод peek должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +class BaseQueue: + """Базовый класс для очереди""" + def enqueue(self, item): + raise NotImplementedError("Метод enqueue должен быть реализован") + + def dequeue(self): + raise NotImplementedError("Метод dequeue должен быть реализован") + + def front(self): + raise NotImplementedError("Метод front должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +class BaseDeque: + """Базовый класс для дека""" + def add_front(self, item): + raise NotImplementedError("Метод add_front должен быть реализован") + + def add_rear(self, item): + raise NotImplementedError("Метод add_rear должен быть реализован") + + def remove_front(self): + raise NotImplementedError("Метод remove_front должен быть реализован") + + def remove_rear(self): + raise NotImplementedError("Метод remove_rear должен быть реализован") + + def peek_front(self): + raise NotImplementedError("Метод peek_front должен быть реализован") + + def peek_rear(self): + raise NotImplementedError("Метод peek_rear должен быть реализован") + + def is_empty(self): + raise NotImplementedError("Метод is_empty должен быть реализован") + + def size(self): + raise NotImplementedError("Метод size должен быть реализован") + + +""" 1. Стек на основе массива""" +class ArrayStack(BaseStack): + def __init__(self): + self._items = [] + + def push(self, item): + """Добавляет элемент на вершину стека""" + self._items.append(item) + + def pop(self): + """Удаляет и возвращает элемент с вершины стека""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._items.pop() + + def peek(self): + """Возвращает элемент с вершины стека без удаления""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._items[-1] + + def is_empty(self): + """Проверяет, пуст ли стек""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в стеке""" + return len(self._items) + + def __str__(self): + return f"ArrayStack({self._items})" + + +""" 2. Стек на основе связного списка""" +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedListStack(BaseStack): + def __init__(self): + self._top = None + self._size = 0 + + def push(self, item): + """Добавляет элемент на вершину стека""" + new_node = Node(item) + new_node.next = self._top + self._top = new_node + self._size += 1 + + def pop(self): + """Удаляет и возвращает элемент с вершины стека""" + if self.is_empty(): + raise IndexError("Стек пуст") + + data = self._top.data + self._top = self._top.next + self._size -= 1 + return data + + def peek(self): + """Возвращает элемент с вершины стека без удаления""" + if self.is_empty(): + raise IndexError("Стек пуст") + return self._top.data + + def is_empty(self): + """Проверяет, пуст ли стек""" + return self._top is None + + def size(self): + """Возвращает количество элементов в стеке""" + return self._size + + def __str__(self): + items = [] + current = self._top + while current: + items.append(current.data) + current = current.next + return f"LinkedListStack({items})" + + +""" 3. Очередь на основе массива """ +class ArrayQueue(BaseQueue): + def __init__(self): + self._items = [] + + def enqueue(self, item): + """Добавляет элемент в конец очереди""" + self._items.append(item) + + def dequeue(self): + """Удаляет и возвращает элемент из начала очереди""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._items.pop(0) + + def front(self): + """Возвращает элемент из начала очереди без удаления""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._items[0] + + def is_empty(self): + """Проверяет, пуста ли очередь""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в очереди""" + return len(self._items) + + def __str__(self): + return f"ArrayQueue({self._items})" + + +""" 4. Очередь на основе связного списка""" +class LinkedListQueue(BaseQueue): + def __init__(self): + self._front = None + self._rear = None + self._size = 0 + + def enqueue(self, item): + """Добавляет элемент в конец очереди""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + self._rear.next = new_node + self._rear = new_node + + self._size += 1 + + def dequeue(self): + """Удаляет и возвращает элемент из начала очереди""" + if self.is_empty(): + raise IndexError("Очередь пуста") + + data = self._front.data + self._front = self._front.next + + if self._front is None: + self._rear = None + + self._size -= 1 + return data + + def front(self): + """Возвращает элемент из начала очереди без удаления""" + if self.is_empty(): + raise IndexError("Очередь пуста") + return self._front.data + + def is_empty(self): + """Проверяет, пуста ли очередь""" + return self._front is None + + def size(self): + """Возвращает количество элементов в очереди""" + return self._size + + def __str__(self): + items = [] + current = self._front + while current: + items.append(current.data) + current = current.next + return f"LinkedListQueue({items})" + + +""" 5. Дек на основе массива""" +class ArrayDeque(BaseDeque): + def __init__(self): + self._items = [] + + def add_front(self, item): + """Добавляет элемент в начало дека""" + self._items.insert(0, item) + + def add_rear(self, item): + """Добавляет элемент в конец дека""" + self._items.append(item) + + def remove_front(self): + """Удаляет и возвращает элемент из начала дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items.pop(0) + + def remove_rear(self): + """Удаляет и возвращает элемент из конца дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items.pop() + + def peek_front(self): + """Возвращает элемент из начала дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items[0] + + def peek_rear(self): + """Возвращает элемент из конца дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._items[-1] + + def is_empty(self): + """Проверяет, пуст ли дек""" + return len(self._items) == 0 + + def size(self): + """Возвращает количество элементов в деке""" + return len(self._items) + + def __str__(self): + return f"ArrayDeque({self._items})" + + +""" 6. Дек на основе связного списка """ +class LinkedListDeque(BaseDeque): + def __init__(self): + self._front = None + self._rear = None + self._size = 0 + + def add_front(self, item): + """Добавляет элемент в начало дека""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + new_node.next = self._front + self._front = new_node + + self._size += 1 + + def add_rear(self, item): + """Добавляет элемент в конец дека""" + new_node = Node(item) + + if self.is_empty(): + self._front = self._rear = new_node + else: + self._rear.next = new_node + self._rear = new_node + + self._size += 1 + + def remove_front(self): + """Удаляет и возвращает элемент из начала дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + + data = self._front.data + self._front = self._front.next + + if self._front is None: + self._rear = None + + self._size -= 1 + return data + + def remove_rear(self): + """Удаляет и возвращает элемент из конца дека""" + if self.is_empty(): + raise IndexError("Дек пуст") + + """Если в деке только один элемент""" + if self._front == self._rear: + data = self._front.data + self._front = self._rear = None + self._size -= 1 + return data + + """Находим предпоследний элемент""" + current = self._front + while current.next != self._rear: + current = current.next + + data = self._rear.data + self._rear = current + self._rear.next = None + self._size -= 1 + return data + + def peek_front(self): + """Возвращает элемент из начала дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._front.data + + def peek_rear(self): + """Возвращает элемент из конца дека без удаления""" + if self.is_empty(): + raise IndexError("Дек пуст") + return self._rear.data + + def is_empty(self): + """Проверяет, пуст ли дек""" + return self._front is None + + def size(self): + """Возвращает количество элементов в деке""" + return self._size + + def __str__(self): + items = [] + current = self._front + while current: + items.append(current.data) + current = current.next + return f"LinkedListDeque({items})" + + + +if __name__ == "__main__": + print("=== ТЕСТИРОВАНИЕ СТРУКТУР ДАННЫХ ===\n") + + """1. Стек на массиве""" + print("1. Тестирование ArrayStack:") + stack1 = ArrayStack() + + """Тест добавления""" + stack1.push(1) + stack1.push(2) + stack1.push(3) + assert str(stack1) == "ArrayStack([1, 2, 3])", "Ошибка добавления в стек" + + """Тест просмотра""" + assert stack1.peek() == 3, "Ошибка peek()" + + """ Тест удаления""" + assert stack1.pop() == 3, "Ошибка pop()" + assert stack1.size() == 2, "Ошибка размера после pop()" + + """Тест пустоты""" + assert not stack1.is_empty(), "Ошибка is_empty()" + + """Очистка и проверка пустого стека""" + stack1.pop() + stack1.pop() + assert stack1.is_empty(), "Стек должен быть пустым" + assert stack1.size() == 0, "Размер должен быть 0" + + print(" ✓ Все тесты ArrayStack пройдены\n") + + """ 2. Стек на связном списке """ + print("2. Тестирование LinkedListStack:") + stack2 = LinkedListStack() + + """Тест добавления""" + stack2.push('a') + stack2.push('b') + stack2.push('c') + assert str(stack2) == "LinkedListStack(['c', 'b', 'a'])", "Ошибка добавления в связный стек" + + """ Тест просмотра""" + assert stack2.peek() == 'c', "Ошибка peek() в связном стеке" + + """Тест удаления """ + assert stack2.pop() == 'c', "Ошибка pop() в связном стеке" + assert stack2.size() == 2, "Ошибка размера после pop()" + + print(" Все тесты LinkedListStack пройдены\n") + + """ 3. Очередь на массиве""" + print("3. Тестирование ArrayQueue:") + queue1 = ArrayQueue() + + """Тест добавления""" + queue1.enqueue(10) + queue1.enqueue(20) + queue1.enqueue(30) + assert str(queue1) == "ArrayQueue([10, 20, 30])", "Ошибка добавления в очередь" + + """Тест просмотра""" + assert queue1.front() == 10, "Ошибка front()" + + """Тест удаления """ + assert queue1.dequeue() == 10, "Ошибка dequeue()" + assert queue1.size() == 2, "Ошибка размера после dequeue()" + assert queue1.front() == 20, "Ошибка front() после dequeue()" + + print(" Все тесты ArrayQueue пройдены\n") + + """4. Очередь на связном списке""" + print("4. Тестирование LinkedListQueue:") + queue2 = LinkedListQueue() + + """Тест добавления""" + queue2.enqueue('x') + queue2.enqueue('y') + queue2.enqueue('z') + assert str(queue2) == "LinkedListQueue(['x', 'y', 'z'])", "Ошибка добавления в связную очередь" + + """Тест просмотра""" + assert queue2.front() == 'x', "Ошибка front() в связной очереди" + + """Tест удаления""" + assert queue2.dequeue() == 'x', "Ошибка dequeue() в связной очереди" + assert queue2.size() == 2, "Ошибка размера после dequeue()" + assert queue2.front() == 'y', "Ошибка front() после dequeue()" + + print(" Все тесты LinkedListQueue пройдены\n") + + """5. Дек на массиве""" + print("5. Тестирование ArrayDeque:") + deque1 = ArrayDeque() + + """Тест добавления спереди и сзади""" + deque1.add_front(1) + deque1.add_rear(2) + deque1.add_front(0) + deque1.add_rear(3) + assert str(deque1) == "ArrayDeque([0, 1, 2, 3])", "Ошибка добавления в дек" + + """Тест просмотра""" + assert deque1.peek_front() == 0, "Ошибка peek_front()" + assert deque1.peek_rear() == 3, "Ошибка peek_rear()" + + """Тест удаления""" + assert deque1.remove_front() == 0, "Ошибка remove_front()" + assert deque1.remove_rear() == 3, "Ошибка remove_rear()" + assert deque1.size() == 2, "Ошибка размера после удалений" + assert str(deque1) == "ArrayDeque([1, 2])", "Ошибка состояния дека после удалений" + + print(" Все тесты ArrayDeque пройдены\n") + + """6. Дек на связном списке""" + print("6. Тестирование LinkedListDeque:") + deque2 = LinkedListDeque() + + """Тест добавления""" + deque2.add_front(100) + deque2.add_rear(200) + deque2.add_front(50) + deque2.add_rear(300) + assert str(deque2) == "LinkedListDeque([50, 100, 200, 300])", "Ошибка добавления в связный дек" + + """ Тест просмотра""" + assert deque2.peek_front() == 50, "Ошибка peek_front() в связном деке" + assert deque2.peek_rear() == 300, "Ошибка peek_rear() в связном деке" + + """Тест удаления""" + assert deque2.remove_front() == 50, "Ошибка remove_front() в связном деке" + assert deque2.remove_rear() == 300, "Ошибка remove_rear() в связном деке" + assert deque2.size() == 2, "Ошибка размера после удалений" + assert str(deque2) == "LinkedListDeque([100, 200])", "Ошибка состояния связного дека после удалений" + + print(" Все тесты LinkedListDeque пройдены\n") + + """ 7. Тестирование исключений""" + print("7. Тестирование исключений:") + + """Тест пустого стека""" + empty_stack = ArrayStack() + try: + empty_stack.pop() + assert False, "Должно быть исключение при pop() пустого стека" + except IndexError: + pass #Ожидаемое поведение + + """Тест пустой очереди""" + empty_queue = ArrayQueue() + try: + empty_queue.dequeue() + assert False, "Должно быть исключение при dequeue() пустой очереди" + except IndexError: + pass #Ожидаемое поведение + + """Тест пустого дека""" + empty_deque = ArrayDeque() + try: + empty_deque.remove_front() + assert False, "Должно быть исключение при remove_front() пустого дека" + except IndexError: + pass #Ожидаемое поведение + + print(" Все тесты исключений пройдены\n") + + print("Все структуры данных работают корректно.") +``` + ### Сводная таблица временной сложности операций | Структура | Добавление | Удаление | Просмотр | Пустота | Размер | diff --git a/labs/lab_05/Laba_05_Asonov_.md b/labs/lab_05/Laba_05_Asonov_.md new file mode 100644 index 0000000..dcf33cb --- /dev/null +++ b/labs/lab_05/Laba_05_Asonov_.md @@ -0,0 +1,918 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Хеш-функции и хеш-таблицы + + +## Цель работы + + +Изучение хеш-функций и хеш-таблиц, а также основных операций над ними. + + +### Задание 1( Хеш-таблица на основе метода цепочек) + + +#### Хеш-таблица +— это структура данных, предназначенная для реализации ассоциативного массива (отображения ключей в значения). Она позволяет выполнять операции добавления, удаления и поиска элементов в среднем за O(1) время. + +#### Основные компоненты: + + Ключ — уникальный идентификатор, по которому происходит поиск данных. + Значение — данные, связанные с ключом. +Хеш-функция — функция, преобразующая ключ в индекс (хеш-код) для размещения в таблице. +Массив бакетов — массив, где хранятся элементы. Каждая ячейка массива называется бакетом (bucket) или слотом. +Коэффициент нагрузки (load factor) — отношение количества элементов в таблице к размеру массива (n / size). Важный параметр для эффективности. +#### Хеш-функции +Хеш-функция — это функция, которая преобразует ключ произвольного размера и типа в целое число (индекс) фиксированного диапазона [0, size-1]. + +#### Требования к хорошей хеш-функции: + +Детерминированность: Один и тот же ключ всегда должен давать один и тот же хеш-код. + +Равномерное распределение: Ключи должны равномерно распределяться по всем индексам таблицы для минимизации коллизий. + +Вычислительная эффективность: Функция должна быстро вычисляться. + +#### Распространенные методы вычисления хеш-кодов: + +Для целых чисел: часто используют взятие по модулю размера таблицы: hash(key) = key % size. + +Для строк: популярна полиномиальная хеш-функция (например, метод Горнера), чтобы учесть значение каждого символа. + +```python +class Node: + def __init__(self, key, value): + self.key = key + self.value = value + self.next = None + + +class HashTable: + def __init__(self, capacity=10): + self.capacity = capacity + self.size = 0 + self.buckets = [None] * capacity + + def _hash(self, key): + return hash(key) % self.capacity + + def put(self, key, value): + index = self._hash(key) + node = self.buckets[index] + + if node is None: + self.buckets[index] = Node(key, value) + self.size += 1 + return + + prev = None + while node is not None: + if node.key == key: + node.value = value + return + prev = node + node = node.next + + prev.next = Node(key, value) + self.size += 1 + + def get(self, key): + """Возвращает значение по ключу или None если ключ не найден""" + index = self._hash(key) + node = self.buckets[index] + + while node is not None: + if node.key == key: + return node.value + node = node.next + + return None + + def remove(self, key): + index = self._hash(key) + node = self.buckets[index] + prev = None + + while node is not None: + if node.key == key: + if prev is None: + self.buckets[index] = node.next + else: + prev.next = node.next + self.size -= 1 + return True + prev = node + node = node.next + + return False + + def __len__(self): + return self.size + + def __contains__(self, key): + return self.get(key) is not None + + def __getitem__(self, key): + value = self.get(key) + if value is None: + raise KeyError(f"Key '{key}' not found") + return value + + def __setitem__(self, key, value): + self.put(key, value) + + + +def test_basic(): + ht = HashTable() + ht.put("apple", 5) + ht.put("banana", 10) + + assert ht.get("apple") == 5 + assert ht.get("banana") == 10 + assert ht.get("orange") is None + assert len(ht) == 2 + print(" Базовая функциональность работает") + + +def test_update(): + ht = HashTable() + ht.put("apple", 5) + ht.put("apple", 15) + + assert ht.get("apple") == 15 + assert len(ht) == 1 + print(" Обновление значений работает") + + +def test_remove(): + ht = HashTable() + ht.put("apple", 5) + ht.put("banana", 10) + + assert ht.remove("apple") == True + assert ht.remove("apple") == False + assert ht.get("apple") is None + assert len(ht) == 1 + print(" Удаление элементов работает") + + +def test_operators(): + ht = HashTable() + ht["apple"] = 5 + ht["banana"] = 10 + + assert ht["apple"] == 5 + assert "apple" in ht + assert "orange" not in ht + print(" Python операторы работают") + + +def test_collisions(): + ht = HashTable(2) + ht.put("a", 1) + ht.put("b", 2) + ht.put("c", 3) + + assert ht.get("a") == 1 + assert ht.get("b") == 2 + assert ht.get("c") == 3 + assert len(ht) == 3 + print(" Обработка коллизий работает") + + +if __name__ == "__main__": + test_basic() + test_update() + test_remove() + test_operators() + test_collisions() + print("\n Все тесты пройдены!") +``` + +#### Метод цепочек (Separate Chaining) + +Каждый бакет представляет собой связный список (или другую структуру), в котором хранятся все элементы с одинаковым хеш-кодом. + +Операции: + +Вставка: Вычисляется индекс. Элемент добавляется в начало или конец списка в данном бакете. + +Поиск: Вычисляется индекс. Производится линейный поиск по списку в бакете по ключу. + +Удаление: Аналогично поиску, после нахождения элемент удаляется из списка. + +Преимущества: Простота реализации, эффективен при высокой нагрузке. + +Недостатки: Требует дополнительной памяти на хранение указателей. + + +### Задание 2 (Хеш-таблица на основе открытой адресации) + +```python +class HashTableOpenAddressing: + def __init__(self, size=10): + self.size = size + self.table = [None] * size + self.count = 0 + self.load_factor_threshold = 0.7 # Порог для перехэширования + self.DELETED = object() #DELETED = object() - специальный маркер, который отличает удаленные элементы от пустых ячеек + + def _hash(self, key): + if isinstance(key, int): + return key % self.size + elif isinstance(key, str): #полиномиальный хеш (31 - простое число для уменьшения коллизий) + hash_value = 0 + for char in key: + hash_value = (hash_value * 31 + ord(char)) % self.size # hash = (97*31 + 98) % size = (3007 + 98) % size + return hash_value + else: + return hash(key) % self.size + + def _probe(self, key, i): + return (self._hash(key) + i) % self.size + + def _resize(self): + if self.count / self.size > self.load_factor_threshold: + old_table = self.table + old_size = self.size + self.size = self.size * 2 + self.table = [None] * self.size + self.count = 0 + for item in old_table: + if item and item != self.DELETED: + self.put(item[0], item[1]) + + def put(self, key, value): + self._resize() + for i in range(self.size): + index = self._probe(key, i) + if self.table[index] is None or self.table[index] == self.DELETED: + self.table[index] = (key, value) + self.count += 1 + return + elif self.table[index][0] == key: + self.table[index] = (key, value) + return + raise Exception("Hash table is full") + + def get(self, key): + for i in range(self.size): + index = self._probe(key, i) + if self.table[index] is None: + break + elif self.table[index] != self.DELETED and self.table[index][0] == key: + return self.table[index][1] + raise KeyError(f"Key {key} not found") + + def delete(self, key): + for i in range(self.size): + index = self._probe(key, i) + if self.table[index] is None: + break + elif self.table[index] != self.DELETED and self.table[index][0] == key: + self.table[index] = self.DELETED #Если бы ставили None, то цепочка пробирования прервалась бы и последующие элементы стали бы недоступны + self.count -= 1 + return True + raise KeyError(f"Key {key} not found") + + def contains(self, key): + try: + self.get(key) + return True + except KeyError: + return False + + def __str__(self): + result = [] + for i, item in enumerate(self.table): + if item is None: + result.append(f"Bucket {i}: None") + elif item == self.DELETED: + result.append(f"Bucket {i}: DELETED") + else: + result.append(f"Bucket {i}: ({item[0]}: {item[1]})") + return "\n".join(result) + + + +def test_basic_operations(): + ht = HashTableOpenAddressing() + ht.put("apple", 5) + ht.put("banana", 10) + + assert ht.get("apple") == 5 + assert ht.get("banana") == 10 + assert ht.count == 2 + print("Базовая функциональность работает") + + +def test_update_values(): + ht = HashTableOpenAddressing() + ht.put("apple", 5) + ht.put("apple", 15) + + assert ht.get("apple") == 15 + assert ht.count == 1 + print(" Обновление значений работает") + + +def test_deletion(): + ht = HashTableOpenAddressing() + ht.put("apple", 5) + ht.put("banana", 10) + + assert ht.delete("apple") == True + assert ht.count == 1 + try: + ht.get("apple") + assert False, "Должно было возникнуть KeyError" + except KeyError: + pass + + assert ht.contains("banana") == True + assert ht.contains("apple") == False + print(" Удаление элементов работает") + + +def test_collisions(): + ht = HashTableOpenAddressing(5) + ht.put("a", 1) + ht.put("b", 2) + ht.put("c", 3) + ht.put("d", 4) + + assert ht.get("a") == 1 + assert ht.get("b") == 2 + assert ht.get("c") == 3 + assert ht.get("d") == 4 + assert ht.count == 4 + + + ht.delete("b") + assert ht.contains("b") == False + ht.put("e", 5) + assert ht.get("e") == 5 + print(" Обработка коллизий работает") + + + +if __name__ == "__main__": + test_basic_operations() + test_update_values() + test_deletion() + test_collisions() + + print("\n Все тесты хеш-таблицы с открытой адресацией пройдены!") +``` + +#### Метод открытой адресации (Open Addressing) + +Все элементы хранятся непосредственно в массиве. При коллизии элемент помещается в другую свободную ячейку согласно выбранной стратегии. + +#### Стратегии поиска свободной ячейки: + +Линейное пробирование: index = (hash(key) + i) % size, где i = 0, 1, 2, ... + +Квадратичное пробирование: index = (hash(key) + i²) % size + +Двойное хеширование: index = (hash1(key) + i * hash2(key)) % size + +##### Преимущества: +Не требует дополнительной памяти для указателей, лучше использует кэш процессора. + +##### Недостатки: +Более сложное удаление элементов, может возникнуть "кластеризация" (скопление элементов), сильная зависимость от коэффициента нагрузки. + + +### Задание 3(Блокчейн) + + +1. Создание строки блока +python +block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}" +Объединяет все важные данные блока в одну строку: + +self.index - номер блока в цепочке + +self.timestamp - время создания блока + +self.data - содержимое блока (транзакции, информация) + +self.previous_hash - хеш предыдущего блока + +2. Кодирование в байты +python +block_string.encode() +Преобразует строку в байты, так как хеш-функции работают с бинарными данными. + +3. Вычисление хеша SHA-256 +python +hashlib.sha256(block_string.encode()) +Применяет криптографическую функцию SHA-256 к данным. + +4. Получение шестнадцатеричного представления +python +.hexdigest() +Преобразует бинарный хеш в читаемую строку из 64 шестнадцатеричных символов. + +```python +import hashlib +import time + +class Block: + def __init__(self, index, timestamp, data, previous_hash): + self.index = index # Порядковый номер блока + self.timestamp = timestamp # Время создания блока + self.data = data # Полезная нагрузка (транзакции, информация) + self.previous_hash = previous_hash # Хеш предыдущего блока + self.hash = self.calculate_hash() # Хеш текущего блока + + def calculate_hash(self): # Вычисление хеша + block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}" #Создание строки блока + return hashlib.sha256(block_string.encode()).hexdigest() + + def __str__(self): + return f"Block {self.index} [Hash: {self.hash}, Previous: {self.previous_hash}, Data: {self.data}]" + +class Blockchain: + def __init__(self): + self.chain = [self.create_genesis_block()] + + def create_genesis_block(self): + return Block(0, time.time(), "Genesis Block", "0") + + def add_block(self, data): + previous_block = self.chain[-1] + new_block = Block( + index=len(self.chain), + timestamp=time.time(), + data=data, + previous_hash=previous_block.hash + ) + self.chain.append(new_block) + + def is_chain_valid(self): + for i in range(1, len(self.chain)): + current_block = self.chain[i] + previous_block = self.chain[i-1] + if current_block.hash != current_block.calculate_hash(): + return False + if current_block.previous_hash != previous_block.hash: + return False + return True + + def get_latest_block(self): + return self.chain[-1] + + def get_chain_length(self): + return len(self.chain) + + def __str__(self): + return "\n".join(str(block) for block in self.chain) + + + +def test_genesis_block(): + blockchain = Blockchain() + + assert len(blockchain.chain) == 1 + assert blockchain.chain[0].index == 0 + assert blockchain.chain[0].data == "Genesis Block" + assert blockchain.chain[0].previous_hash == "0" + assert blockchain.chain[0].hash == blockchain.chain[0].calculate_hash() + print("✓ Генезис-блок создан корректно") + + +def test_adding_blocks(): + blockchain = Blockchain() + + blockchain.add_block("Transaction 1") + blockchain.add_block("Transaction 2") + + assert len(blockchain.chain) == 3 + assert blockchain.chain[1].data == "Transaction 1" + assert blockchain.chain[2].data == "Transaction 2" + assert blockchain.chain[1].index == 1 + assert blockchain.chain[2].index == 2 + print(" Добавление блоков работает") + + +def test_block_linking(): + blockchain = Blockchain() + + blockchain.add_block("Data 1") + blockchain.add_block("Data 2") + + + assert blockchain.chain[1].previous_hash == blockchain.chain[0].hash + assert blockchain.chain[2].previous_hash == blockchain.chain[1].hash + print(" Связи между блоками корректны") + + +def test_chain_validation(): + blockchain = Blockchain() + + blockchain.add_block("Valid Data 1") + blockchain.add_block("Valid Data 2") + + + assert blockchain.is_chain_valid() == True + + + blockchain.chain[1].data = "Tampered Data" + + + assert blockchain.is_chain_valid() == False + print(" Валидация цепочки работает") + + +def test_data_integrity(): + blockchain = Blockchain() + + original_data = "Original Data" + blockchain.add_block(original_data) + + original_hash = blockchain.chain[1].hash + + + assert blockchain.chain[1].calculate_hash() == original_hash + + + blockchain.chain[1].data = "Modified Data" + assert blockchain.chain[1].calculate_hash() != original_hash + print(" Целостность данных и хеширование работают") + + +if __name__ == "__main__": + test_genesis_block() + test_adding_blocks() + test_block_linking() + test_chain_validation() + test_data_integrity() + print("\n Все тесты блокчейна пройдены!") +``` + +### Задание 4(Проверка пересечения двух массивов) + +```python +def has_intersection(arr1, arr2): + + hash_set = set(arr1) #Создаем множество(O(n) - для хранения множества) + for item in arr2: + if item in hash_set: + return True + return False + + + +def test_has_intersection(): + + arr1 = [1, 2, 3, 4, 5] + arr2 = [5, 6, 7, 8, 9] + assert has_intersection(arr1, arr2) == True + print(" Тест 1: Есть пересечение - пройден") + + + arr1 = [1, 2, 3, 4] + arr2 = [5, 6, 7, 8] + assert has_intersection(arr1, arr2) == False + print(" Тест 2: Нет пересечения - пройден") + + arr1 = [] + arr2 = [1, 2, 3] + assert has_intersection(arr1, arr2) == False + + arr1 = [1, 2, 3] + arr2 = [] + assert has_intersection(arr1, arr2) == False + + arr1 = [] + arr2 = [] + assert has_intersection(arr1, arr2) == False + print(" Тест 3: Пустые массивы - пройден") + + arr1 = [1, 2, 3, 4, 5] + arr2 = [3, 4, 5, 6, 7] + assert has_intersection(arr1, arr2) == True + print(" Тест 4: Множественные пересечения - пройден") + + arr1 = ["apple", "banana", "orange"] + arr2 = ["banana", "grape", "kiwi"] + assert has_intersection(arr1, arr2) == True + + arr1 = [1.5, 2.7, 3.1] + arr2 = [3.1, 4.2, 5.8] + assert has_intersection(arr1, arr2) == True + print(" Тест 5: Разные типы данных - пройден") + +if __name__ == "__main__": + test_has_intersection() + + print("\n Все тесты пройдены успешно!") +``` + +### Задание 5 (Проверка уникальности элементов в массиве) + +```python +def has_unique_elements(arr): + + hash_set = set() # Пустое множество + for item in arr: + if item in hash_set: + return False + hash_set.add(item) + return True + + +def test_has_unique_elements(): + + + arr = [1, 2, 3, 4, 5] + assert has_unique_elements(arr) == True + print(" Тест 1: Все элементы уникальны - пройден") + + + arr = [1, 2, 3, 2, 4] + assert has_unique_elements(arr) == False + print(" Тест 2: Есть дубликаты - пройден") + + + arr = [] + assert has_unique_elements(arr) == True + print(" Тест 3: Пустой массив - пройден") + + + arr = [42] + assert has_unique_elements(arr) == True + print(" Тест 4: Один элемент - пройден") + + + arr = ["apple", "banana", "orange"] + assert has_unique_elements(arr) == True + + arr = ["apple", "banana", "apple"] + assert has_unique_elements(arr) == False + + arr = [1, "1", 2, "2"] # + assert has_unique_elements(arr) == True + print(" Тест 5: Разные типы данных - пройден") + + +if __name__ == "__main__": + test_has_unique_elements() + print("\n Все тесты пройдены успешно!") +``` + +### Задание 6 (Нахождение пар с заданной суммой) + +```python +def find_pairs_with_sum(arr, target_sum): + result = [] + seen = set() # Множество для отслеживания просмотренных чисел + for num in arr: + complement = target_sum - num + if complement in seen: + result.append((complement, num)) + seen.add(num) + return result + +def test_find_pairs_with_sum(): + """Тестирование функции find_pairs_with_sum""" + arr = [2, 7, 11, 15, 3, 6] + target = 9 + result = find_pairs_with_sum(arr, target) + + + assert (2, 7) in result + assert (3, 6) in result + assert len(result) == 2 + print(" Тест пройден: найдены пары (2,7) и (3,6)") + +if __name__ == "__main__": + test_find_pairs_with_sum() + print(" Тест пройден успешно!") +``` + +```python +### Задание 7(Задача на проверку анаграмм) +``` + +```python +def are_anagrams(str1, str2): + if len(str1) != len(str2): + return False + char_count = {} #Создание словаря для подсчета символов + for char in str1: + if char in char_count: + char_count[char] += 1 + else: + char_count[char] = 1 + for char in str2: + if char not in char_count or char_count[char] == 0: + return False + char_count[char] -= 1 + return True + + +def test_are_anagrams(): + """Тестирование функции are_anagrams""" + str1 = "listen" + str2 = "silent" + result = are_anagrams(str1, str2) + + assert result == True + print(" Тест пройден: 'listen' и 'silent' являются анаграммами") + +if __name__ == "__main__": + test_are_anagrams() + print(" Тест пройден успешно!") +``` + +1. Определение хеш-таблицы +Хеш-таблица - это структура данных, которая реализует ассоциативный массив (словарь), храня пары ключ-значение. Основная задача - обеспечить быстрый доступ к данным по ключу (в среднем O(1)). + +2. Хеш-функция +Хеш-функция - это функция, которая преобразует ключ произвольного размера в целочисленный индекс фиксированного диапазона. Роль: равномерно распределять ключи по ячейкам таблицы. + +3. Свойства хорошей хеш-функции +Детерминированность: одинаковые ключи → одинаковый хеш + +Равномерность: равномерное распределение по всему диапазону + +Быстрота вычисления: O(1) время вычисления + +Устойчивость к коллизиям: минимизирует вероятность коллизий + +4. Коллизии +Коллизия - ситуация, когда разные ключи имеют одинаковый хеш. Неизбежны из-за принципа Дирихле (pigeonhole principle): если ключей больше, чем ячеек, коллизии неизбежны. + +5. Коэффициент нагрузки +Load factor = (количество элементов) / (размер таблицы). +Влияние: при высоком коэффициенте увеличивается вероятность коллизий и снижается производительность. + +6. Метод цепочек +Каждая ячейка содержит ссылку на связный список элементов. При коллизии новый элемент добавляется в список. + +7. Метод открытой адресации +Все элементы хранятся непосредственно в массиве. При коллизии ищется следующая свободная ячейка по определенному алгоритму. + +8. Методы пробирования +Линейное: h(k, i) = (h(k) + i) % m + +Квадратичное: h(k, i) = (h(k) + c₁i + c₂i²) % m + +Двойное хеширование: h(k, i) = (h₁(k) + i·h₂(k)) % m + +Наиболее эффективен двойное хеширование, так как оно уменьшает кластеризацию. + +9. Преимущества и недостатки методов +Метод цепочек: + +✓ Проще в реализации удаления + +✓ Устойчив к высокому load factor + +✗ Дополнительная память на указатели + +Открытая адресация: + +✓ Лучшая локальность ссылок + +✓ Меньше выделений памяти + +✗ Сложнее удаление, чувствителен к load factor + +10. Проблема удаления в открытой адресации +Простое удаление нарушает цепочку пробирования. Решение: использовать специальные маркеры (DELETED), которые игнорируются при вставке, но учитываются при поиске. + +11. Сложность O(1) +В среднем случае благодаря равномерному распределению и постоянному времени доступа к ячейкам по индексу. + +12. Худший случай +Все ключи попадают в одну ячейку. Сложность деградирует до O(n). Возникает при плохой хеш-функции или атаке. + +13-15. Рехеширование +Рехеширование - процесс увеличения размера таблицы и перераспределения элементов. Выполняется при достижении порогового load factor (обычно 0.7-0.8). + +Процесс: + +Создать новую таблицу большего размера + +Перехешировать все элементы из старой таблицы + +Заменить старую таблицу новой + +16. Структура для бакетов +Связный список - прост в реализации, эффективен для небольших цепочек. Сбалансированное дерево - лучше для длинных цепочек. + +17-18. Размер таблицы +Формула: index = hash(key) % table_size +Простой размер уменьшает кластеризацию при модульной операции. + +19. Хеш-функция для строк + +20. +python +def hash_string(s, table_size): + hash_val = 0 + for char in s: + hash_val = (hash_val * 31 + ord(char)) % table_size + return hash_val + +22. Проблемы неравномерного распределения +Увеличивается количество коллизий + +Снижается производительность + +Возможна атака отказом в обслуживании + +21. Выбор метода +Цепочки: когда неизвестно количество элементов, частые удаления +Открытая адресация: когда известен максимальный размер, важна производительность + +22. Примеры применения +Кэширование (memcached, Redis) + +Словари в Python, HashMap в Java + +Базы данных (индексы) + +23. Сравнение с деревьями +Хеш-таблица: + +✓ Быстрее в среднем (O(1) vs O(log n)) + +✗ Нет упорядочивания, худший случай O(n) + +Дерево: + +✓ Гарантированная O(log n), упорядоченность + +✗ Сложнее реализация, медленнее в среднем + +24. Дубликаты ключей +Может, если значения хранятся в списке или используется мульти-хеш-таблица. + +25. Построение таблицы +Ключи: 12, 5, 19, 7, 26, 14, 33 +h(key) = key % 7 + +Метод цепочек: + +text +0: 14 → 7 +1: 33 → 26 → 19 → 12 +2: +3: +4: +5: 5 +6: + +Линейное пробирование: + +text +0: 14 +1: 7 +2: 33 +3: 26 +4: 19 +5: 5 +6: 12 + +26. Поиск двух чисел +python +def two_sum(nums, target): + seen = {} + for i, num in enumerate(nums): + complement = target - num + if complement in seen: + return [seen[complement], i] + seen[num] = i +27. Первый повторяющийся элемент +python +def first_duplicate(arr): + seen = set() + for num in arr: + if num in seen: + return num + seen.add(num) + +28. Идеальное хеширование +Идеальное хеширование - хеш-функция без коллизий для фиксированного набора ключей. Применяется когда набор ключей известен заранее и не изменяется (например, ключевые слова языка). + +Статическое идеальное хеширование использует двухуровневую структуру, где на втором уровне для каждой ячейки строится своя хеш-функция без коллизий. + + From 7b35de9d7c58ea60eadd65e93b58ff6f5e15f093 Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 9 Nov 2025 19:44:28 +0300 Subject: [PATCH 17/19] laba 6 --- labs/lab_06/Untitled.md | 418 ++++++++++++++++++++++++++++++++++++ labs/lab_06/block_table.png | Bin 0 -> 31023 bytes 2 files changed, 418 insertions(+) create mode 100644 labs/lab_06/Untitled.md create mode 100644 labs/lab_06/block_table.png diff --git a/labs/lab_06/Untitled.md b/labs/lab_06/Untitled.md new file mode 100644 index 0000000..9964b4a --- /dev/null +++ b/labs/lab_06/Untitled.md @@ -0,0 +1,418 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Итеративные и рекурсивные алгоритмы + + +## Цель работы + + +Изучить рекурсивные алгоритмы и рекурсивные структуры данных; научиться проводить анализ итеративных и рекурсивных процедур; исследовать эффективность итеративных и рекурсивных процедур при реализации на ПЭВМ. + + +### Задание 1(Рекурсивная реализация) + + + Рекурсивное вычисление квадратного корня методом Ньютона + + Args: + N: число, из которого извлекается корень + A: начальное приближение + E: допустимая погрешность + + Returns: + float: приближенное значение квадратного корня + + +```python +import math +import time +from functools import wraps + +def sqrt_recursive(N, A, E): + if N < 0: + raise ValueError("N должно быть неотрицательным") + if N == 0: + return 0.0 + if A <= 0: + raise ValueError("A должно быть положительным") + + """Новое приближение по формуле Ньютона""" + new_A = (A + N / A) / 2 + + if abs(new_A - A) < E: + return new_A + + return sqrt_recursive(N, new_A, E) + +print("Введите число для извлечения квадратного корня:") +N = float(input()) +print("Введите начальное приближение:") +A = float(input()) +print("Введите точность вычисления:") +E = float(input()) + +try: + result = sqrt_recursive(N, A, E) + print(f"Квадратный корень из {N} с точностью {E}:") + print(f"Результат: {result}") + print(f"Проверка: {result} * {result} = {result * result}") +except ValueError as e: + print(f"Ошибка: {e}") +``` + +### Задание 2 (Итеративная реализация (без рекурсии)) + +```python +def sqrt_iterative(N, A, E): + if N < 0: + raise ValueError("N должно быть неотрицательным") + if N == 0: + return 0.0 + if A <= 0: + raise ValueError("A должно быть положительным") + + current_A = A + while True: + new_A = (current_A + N / current_A) / 2 + if abs(new_A - current_A) < E: + return new_A + current_A = new_A + +print("Введите число для извлечения квадратного корня:") +N = float(input()) +print("Введите начальное приближение:") +A = float(input()) +print("Введите точность вычисления:") +E = float(input()) + +try: + result = sqrt_iterative(N, A, E) + print(f"Квадратный корень из {N} с точностью {E}:") + print(f"Результат: {result}") + print(f"Проверка: {result} * {result} = {result * result}") +except ValueError as e: + print(f"Ошибка: {e}") +``` + +### Задание 3 + + + + + +![png](block_table.png) + +```python +import sys +import time +from functools import wraps +from typing import List, Dict, Any + +class SqrtStats: + def __init__(self): + self.iterations = 0 + self.max_stack_depth = 0 + self.execution_time = 0 + self.intermediate_results = [] + + def reset(self): + self.iterations = 0 + self.max_stack_depth = 0 + self.execution_time = 0 + self.intermediate_results = [] + +stats = SqrtStats() + +"""Декоратор для сохранения промежуточных результатов рекурсии""" +def save_intermediate_results(func): + @wraps(func) + def wrapper(N, A, E, depth=0): + stats.iterations += 1 + stats.max_stack_depth = max(stats.max_stack_depth, depth) + + intermediate = { + 'depth': depth, + 'N': N, + 'A': A, + 'E': E, + 'timestamp': time.time() + } + + result = func(N, A, E, depth) + + intermediate['result'] = result + stats.intermediate_results.append(intermediate) + + return result + return wrapper + +""" Рекурсивная реализация с ручным сохранением промежуточных результатов""" +def manual_sqrt_recursive_with_storage(N, A, E): + intermediate_results = [] + stack_depth = 0 + + def recursive_helper(n, a, e, depth): + nonlocal stack_depth + stack_depth = max(stack_depth, depth) + stats.iterations += 1 + + intermediate_results.append({ + 'depth': depth, + 'N': n, + 'A': a, + 'E': e, + 'action': 'before_calculation' + }) + + if n < 0: + raise ValueError("N должно быть неотрицательным") + if n == 0: + result = 0.0 + intermediate_results.append({ + 'depth': depth, + 'result': result, + 'action': 'base_case_zero' + }) + return result + if a <= 0: + raise ValueError("A должно быть положительным") + + new_A = (a + n / a) / 2 + + intermediate_results.append({ + 'depth': depth, + 'current_A': a, + 'new_A': new_A, + 'error': abs(new_A - a), + 'action': 'calculation' + }) + + if abs(new_A - a) < e: + intermediate_results.append({ + 'depth': depth, + 'result': new_A, + 'action': 'base_case_precision' + }) + return new_A + + recursive_result = recursive_helper(n, new_A, e, depth + 1) + + intermediate_results.append({ + 'depth': depth, + 'final_result': recursive_result, + 'action': 'after_recursion' + }) + + return recursive_result + + result = recursive_helper(N, A, E, 0) + stats.max_stack_depth = stack_depth + stats.intermediate_results = intermediate_results + return result + +""" Рекурсивный алгоритм с декоратором для сохранения промежуточных результатов""" +@save_intermediate_results +def sqrt_recursive_decorated(N, A, E, depth=0): + if N < 0: + raise ValueError("N должно быть неотрицательным") + if N == 0: + return 0.0 + if A <= 0: + raise ValueError("A должно быть положительным") + + new_A = (A + N / A) / 2 + + if abs(new_A - A) < E: + return new_A + + return sqrt_recursive_decorated(N, new_A, E, depth + 1) + +""" Итеративный алгоритм со сбором статистики """ +def sqrt_iterative_with_stats(N, A, E): + stats.reset() + start_time = time.time() + + if N < 0: + raise ValueError("N должно быть неотрицательным") + if N == 0: + stats.execution_time = time.time() - start_time + return 0.0 + if A <= 0: + raise ValueError("A должно быть положительным") + + current_A = A + iteration = 0 + + while True: + iteration += 1 + stats.iterations = iteration + + new_A = (current_A + N / current_A) / 2 + + stats.intermediate_results.append({ + 'iteration': iteration, + 'current_A': current_A, + 'new_A': new_A, + 'error': abs(new_A - current_A), + 'N': N, + 'E': E + }) + + if abs(new_A - current_A) < E: + break + + current_A = new_A + + stats.execution_time = time.time() - start_time + return new_A + +""" Анализ максимальной глубины рекурсии """ +def analyze_sqrt_stack_limit(): + original_limit = sys.getrecursionlimit() + print(f"Текущий лимит рекурсии: {original_limit}") + + max_safe_iterations = 0 + + for i in range(original_limit - 100): + try: + """ Тестируем с очень маленькой точностью для максимального количества итераций""" + sqrt_recursive_decorated(2, 1, 1e-300) + max_safe_iterations = i + except RecursionError: + break + + return max_safe_iterations, original_limit + +""" Сравнение производительности алгоритмов""" +def sqrt_performance_comparison(test_cases): + results = [] + + for N, A, E in test_cases: + print(f"\nТестирование sqrt({N}) с A={A}, E={E}:") + + """Рекурсивный с декоратором""" + stats.reset() + start_time = time.time() + try: + result1 = sqrt_recursive_decorated(N, A, E) + recursive_time = time.time() - start_time + print(f"Рекурсивный (с декоратором): {result1:.10f}") + print(f" Время: {recursive_time:.6f}с, Итерации: {stats.iterations}, Глубина стека: {stats.max_stack_depth}") + except Exception as e: + print(f"Рекурсивный (с декоратором): Ошибка - {e}") + recursive_time = float('inf') + + """ Рекурсивный с ручным сохранением """ + stats.reset() + start_time = time.time() + try: + result2 = manual_sqrt_recursive_with_storage(N, A, E) + manual_recursive_time = time.time() - start_time + print(f"Рекурсивный (ручное сохранение): {result2:.10f}") + print(f" Время: {manual_recursive_time:.6f}с, Итерации: {stats.iterations}, Глубина стека: {stats.max_stack_depth}") + except Exception as e: + print(f"Рекурсивный (ручное сохранение): Ошибка - {e}") + manual_recursive_time = float('inf') + + """ Итеративный""" + stats.reset() + try: + result3 = sqrt_iterative_with_stats(N, A, E) + iterative_time = stats.execution_time + print(f"Итеративный: {result3:.10f}") + print(f" Время: {iterative_time:.6f}с, Итерации: {stats.iterations}") + except Exception as e: + print(f"Итеративный: Ошибка - {e}") + iterative_time = float('inf') + + """ Проверка совпадения результатов """ + try: + if abs(result1 - result2) < E and abs(result2 - result3) < E: + print(" Все алгоритмы дали одинаковый результат") + else: + print(" Ошибка: результаты различаются") + except: + print(" Невозможно сравнить результаты из-за ошибок") + + results.append({ + 'N': N, + 'A': A, + 'E': E, + 'recursive_time': recursive_time, + 'manual_recursive_time': manual_recursive_time, + 'iterative_time': iterative_time, + 'recursive_iterations': stats.iterations, + 'stack_depth': stats.max_stack_depth + }) + + return results + +""" Вывод сохраненных промежуточных результатов """ +def print_sqrt_intermediate_results(): + print("\nПромежуточные результаты (последний вызов):") + for i, result in enumerate(stats.intermediate_results[-10:]): + print(f" {i+1}: {result}") + +# Итог: +print("=" * 60) +print("АНАЛИЗ АЛГОРИТМОВ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ") +print("=" * 60) + +print("\n1. АНАЛИЗ ОГРАНИЧЕНИЙ РЕКУРСИИ") +max_safe_iterations, recursion_limit = analyze_sqrt_stack_limit() +print(f"Максимальное безопасное количество итераций: {max_safe_iterations}") + +test_cases = [ + (25, 5, 1e-10), + (2, 1, 1e-10), + (100, 10, 1e-12), + (1000, 30, 1e-8), + (0.25, 0.5, 1e-10), + (1, 1, 1e-15) +] + +print("\n2. СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ") +results = sqrt_performance_comparison(test_cases) + +print("\n3. СВОДНАЯ СТАТИСТИКА") +print("Алгоритм | Среднее время | Макс. итераций | Макс. глубина") +print("-" * 70) + +""" Фильтруем успешные выполнения """ +successful_results = [r for r in results if r['recursive_time'] != float('inf')] + +if successful_results: + recursive_times = [r['recursive_time'] for r in successful_results] + manual_times = [r['manual_recursive_time'] for r in successful_results] + iterative_times = [r['iterative_time'] for r in successful_results] + + print(f"Рекурсивный | {sum(recursive_times)/len(recursive_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | {max(r['stack_depth'] for r in successful_results)}") + print(f"Ручной рекурсивный | {sum(manual_times)/len(manual_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | {max(r['stack_depth'] for r in successful_results)}") + print(f"Итеративный | {sum(iterative_times)/len(iterative_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | -") +else: + print("Нет успешных выполнений для сравнения") + +print("\n4. ДЕМОНСТРАЦИЯ ПРОМЕЖУТОЧНЫХ РЕЗУЛЬТАТОВ") +stats.reset() +try: + sqrt_recursive_decorated(25, 5, 1e-10) + print_sqrt_intermediate_results() +except Exception as e: + print(f"Ошибка при демонстрации: {e}") +``` + +```python + +``` diff --git a/labs/lab_06/block_table.png b/labs/lab_06/block_table.png new file mode 100644 index 0000000000000000000000000000000000000000..420aa81c17ef547dea8fdb7709cdb921d3301dfd GIT binary patch literal 31023 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 Date: Sun, 16 Nov 2025 22:00:21 +0300 Subject: [PATCH 18/19] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_07/Untitled.md | 934 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 934 insertions(+) create mode 100644 labs/lab_07/Untitled.md diff --git a/labs/lab_07/Untitled.md b/labs/lab_07/Untitled.md new file mode 100644 index 0000000..cd8378e --- /dev/null +++ b/labs/lab_07/Untitled.md @@ -0,0 +1,934 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Алгоритмы на графах + + +## Цель работы + + +Изучение основных алгоритмов на графах. + + +Асонов Сергей ИУ10-36 + + +# Задание 1 + +```python +from collections import deque + +class Graph: + def __init__(self, directed=False): + self.adjacency_list = {} + self.directed = directed + + def add_vertex(self, vertex): + if vertex not in self.adjacency_list: + self.adjacency_list[vertex] = [] + return True + return False + + def add_edge(self, vertex1, vertex2): + if vertex1 not in self.adjacency_list: + self.add_vertex(vertex1) + if vertex2 not in self.adjacency_list: + self.add_vertex(vertex2) + + if vertex2 not in self.adjacency_list[vertex1]: + self.adjacency_list[vertex1].append(vertex2) + + if not self.directed and vertex1 not in self.adjacency_list[vertex2]: + self.adjacency_list[vertex2].append(vertex1) + + def remove_edge(self, vertex1, vertex2): + if vertex1 in self.adjacency_list and vertex2 in self.adjacency_list[vertex1]: + self.adjacency_list[vertex1].remove(vertex2) + + if not self.directed and vertex2 in self.adjacency_list and vertex1 in self.adjacency_list[vertex2]: + self.adjacency_list[vertex2].remove(vertex1) + + def remove_vertex(self, vertex): + if vertex in self.adjacency_list: + for adjacent_vertex in self.adjacency_list[vertex]: + self.adjacency_list[adjacent_vertex].remove(vertex) + del self.adjacency_list[vertex] + return True + return False + + def display(self): + print("Граф (список смежности):") + for vertex in sorted(self.adjacency_list.keys()): + print(f"{vertex}: {sorted(self.adjacency_list[vertex])}") + + def dfs(self, start_vertex, target_vertex=None): + if start_vertex not in self.adjacency_list: + return [] + + visited = set() + stack = [start_vertex] + result = [] + + while stack: + current_vertex = stack.pop() + + if current_vertex not in visited: + visited.add(current_vertex) + result.append(current_vertex) + + if target_vertex and current_vertex == target_vertex: + break + + for neighbor in reversed(self.adjacency_list[current_vertex]): + if neighbor not in visited: + stack.append(neighbor) + + return result + + def bfs(self, start_vertex, target_vertex=None): + if start_vertex not in self.adjacency_list: + return [] + + visited = set() + queue = deque([start_vertex]) + result = [] + + while queue: + current_vertex = queue.popleft() + + if current_vertex not in visited: + visited.add(current_vertex) + result.append(current_vertex) + + if target_vertex and current_vertex == target_vertex: + break + + for neighbor in self.adjacency_list[current_vertex]: + if neighbor not in visited: + queue.append(neighbor) + + return result + + def find_path_dfs(self, start_vertex, target_vertex): + if start_vertex not in self.adjacency_list or target_vertex not in self.adjacency_list: + return None + + visited = set() + stack = [(start_vertex, [start_vertex])] + + while stack: + current_vertex, path = stack.pop() + + if current_vertex == target_vertex: + return path + + if current_vertex not in visited: + visited.add(current_vertex) + + for neighbor in reversed(self.adjacency_list[current_vertex]): + if neighbor not in visited: + stack.append((neighbor, path + [neighbor])) + + return None + + def find_path_bfs(self, start_vertex, target_vertex): + if start_vertex not in self.adjacency_list or target_vertex not in self.adjacency_list: + return None + + visited = set() + queue = deque([(start_vertex, [start_vertex])]) + + while queue: + current_vertex, path = queue.popleft() + + if current_vertex == target_vertex: + return path + + if current_vertex not in visited: + visited.add(current_vertex) + + for neighbor in self.adjacency_list[current_vertex]: + if neighbor not in visited: + queue.append((neighbor, path + [neighbor])) + + return None + + def get_vertices(self): + return list(self.adjacency_list.keys()) + + def get_edges(self): + edges = [] + for vertex in self.adjacency_list: + for neighbor in self.adjacency_list[vertex]: + if not self.directed: + if (neighbor, vertex) not in edges: + edges.append((vertex, neighbor)) + else: + edges.append((vertex, neighbor)) + return edges + +def test_graph_operations(): + """Тест основных операций с графом""" + print("=== ТЕСТ 1: ОСНОВНЫЕ ОПЕРАЦИИ ===") + g = Graph() + + # Добавление вершин и ребер + g.add_vertex('A') + g.add_edge('A', 'B') + g.add_edge('B', 'C') + g.add_edge('C', 'D') + + # Проверка структуры графа + assert 'A' in g.get_vertices() + assert 'B' in g.get_vertices() + assert 'C' in g.get_vertices() + assert ('A', 'B') in g.get_edges() + assert ('B', 'C') in g.get_edges() + + print("✓ Тест основных операций пройден") + +def test_graph_algorithms(): + """Тест алгоритмов обхода""" + print("=== ТЕСТ 2: АЛГОРИТМЫ ОБХОДА ===") + g = Graph() + + # Создаем граф: A-B-C-D, A-E + g.add_edge('A', 'B') + g.add_edge('B', 'C') + g.add_edge('C', 'D') + g.add_edge('A', 'E') + + # Тест DFS + dfs_result = g.dfs('A') + assert dfs_result[0] == 'A' # Начинается с A + assert set(dfs_result) == {'A', 'B', 'C', 'D', 'E'} # Все вершины посещены + + # Тест BFS + bfs_result = g.bfs('A') + assert bfs_result[0] == 'A' + assert set(bfs_result) == {'A', 'B', 'C', 'D', 'E'} + + # Тест поиска пути + path = g.find_path_bfs('A', 'D') + assert path == ['A', 'B', 'C', 'D'] or path == ['A', 'E', 'D'] + + print("✓ Тест алгоритмов обхода пройден") + +# Демонстрация работы +if __name__ == "__main__": + print("=== ЗАДАНИЕ 1: КЛАСС GRAPH С АЛГОРИТМАМИ ОБХОДА ===") + + # Запуск тестов + test_graph_operations() + test_graph_algorithms() + + print("\n=== ДЕМОНСТРАЦИЯ РАБОТЫ ===") + + # Создаем граф + g = Graph() + + # Добавляем вершины и ребра + g.add_edge('A', 'B') + g.add_edge('A', 'C') + g.add_edge('B', 'D') + g.add_edge('C', 'E') + g.add_edge('D', 'E') + g.add_edge('E', 'F') + + # Отображаем граф + g.display() + + # Тестируем алгоритмы обхода + print(f"\nDFS обход от 'A': {g.dfs('A')}") + print(f"BFS обход от 'A': {g.bfs('A')}") + + # Тестируем поиск путей + print(f"\nПоиск пути от 'A' до 'F' (DFS): {g.find_path_dfs('A', 'F')}") + print(f"Поиск пути от 'A' до 'F' (BFS): {g.find_path_bfs('A', 'F')}") + + print("\n✓ Все тесты пройдены успешно!") +``` + +## Задание 2 + +```python +from collections import deque + +class SimpleGraph: + def __init__(self): + self.adjacency_list = {} + + def add_vertex(self, vertex): + """Добавить вершину""" + if vertex not in self.adjacency_list: + self.adjacency_list[vertex] = [] + print(f"✓ Вершина '{vertex}' добавлена") + else: + print(f"✗ Вершина '{vertex}' уже существует") + + def add_edge(self, vertex1, vertex2): + """Добавить ребро между двумя вершинами""" + if vertex1 not in self.adjacency_list: + self.add_vertex(vertex1) + if vertex2 not in self.adjacency_list: + self.add_vertex(vertex2) + + if vertex2 not in self.adjacency_list[vertex1]: + self.adjacency_list[vertex1].append(vertex2) + self.adjacency_list[vertex2].append(vertex1) # Неориентированный граф + print(f"✓ Ребро между '{vertex1}' и '{vertex2}' добавлено") + else: + print(f"✗ Ребро между '{vertex1}' и '{vertex2}' уже существует") + + def show_graph(self): + """Показать граф""" + if not self.adjacency_list: + print("Граф пустой") + return + + print("\nТекущий граф:") + for vertex in sorted(self.adjacency_list.keys()): + neighbors = sorted(self.adjacency_list[vertex]) + print(f" {vertex} соединен с: {neighbors}") + + def bfs(self, start_vertex): + """Обход в ширину (BFS)""" + if start_vertex not in self.adjacency_list: + print(f"✗ Вершина '{start_vertex}' не найдена") + return [] + + visited = set() + queue = deque([start_vertex]) + result = [] + + print(f"\nBFS обход от '{start_vertex}':", end=" ") + + while queue: + current = queue.popleft() + if current not in visited: + visited.add(current) + result.append(current) + print(current, end=" ") + + for neighbor in self.adjacency_list[current]: + if neighbor not in visited: + queue.append(neighbor) + + print() + return result + + def dfs(self, start_vertex): + """Обход в глубину (DFS)""" + if start_vertex not in self.adjacency_list: + print(f"✗ Вершина '{start_vertex}' не найдена") + return [] + + visited = set() + stack = [start_vertex] + result = [] + + print(f"\nDFS обход от '{start_vertex}':", end=" ") + + while stack: + current = stack.pop() + if current not in visited: + visited.add(current) + result.append(current) + print(current, end=" ") + + for neighbor in reversed(self.adjacency_list[current]): + if neighbor not in visited: + stack.append(neighbor) + + print() + return result + + def find_path(self, start_vertex, target_vertex): + """Найти путь между двумя вершинами""" + if start_vertex not in self.adjacency_list: + print(f"✗ Вершина '{start_vertex}' не найдена") + return None + if target_vertex not in self.adjacency_list: + print(f"✗ Вершина '{target_vertex}' не найдена") + return None + + visited = set() + queue = deque([(start_vertex, [start_vertex])]) + + while queue: + current, path = queue.popleft() + + if current == target_vertex: + print(f"✓ Путь от '{start_vertex}' до '{target_vertex}': {' -> '.join(path)}") + return path + + if current not in visited: + visited.add(current) + + for neighbor in self.adjacency_list[current]: + if neighbor not in visited: + queue.append((neighbor, path + [neighbor])) + + print(f"✗ Путь от '{start_vertex}' до '{target_vertex}' не найден") + return None + +def test_simple_graph(): + """Простой тест графа""" + print("=== ПРОСТОЙ ТЕСТ ===") + g = SimpleGraph() + + # Создаем простой граф + g.add_vertex('A') + g.add_vertex('B') + g.add_vertex('C') + g.add_edge('A', 'B') + g.add_edge('B', 'C') + + # Проверяем обходы + g.bfs('A') + g.dfs('A') + g.find_path('A', 'C') + + print("✓ Простой тест завершен") + +def test_path_finding(): + """Тест поиска пути""" + print("\n=== ТЕСТ ПОИСКА ПУТИ ===") + g = SimpleGraph() + + # Создаем граф: A-B-C-D, A-E + g.add_edge('A', 'B') + g.add_edge('B', 'C') + g.add_edge('C', 'D') + g.add_edge('A', 'E') + + # Ищем путь + path = g.find_path('A', 'D') + assert path is not None, "Путь должен существовать" + assert path[0] == 'A', "Начало пути должно быть A" + assert path[-1] == 'D', "Конец пути должен быть D" + + print("✓ Тест поиска пути завершен") + +def main(): + """Главное меню приложения""" + graph = SimpleGraph() + + print("=== ПРОСТОЕ ПРИЛОЖЕНИЕ ДЛЯ РАБОТЫ С ГРАФАМИ ===") + print("Создавайте графы и изучайте алгоритмы обхода!") + + # Создаем пример графа для демонстрации + print("\nСоздаем пример графа...") + graph.add_edge('Москва', 'Санкт-Петербург') + graph.add_edge('Москва', 'Казань') + graph.add_edge('Санкт-Петербург', 'Псков') + graph.add_edge('Казань', 'Уфа') + graph.show_graph() + + while True: + print("\n" + "="*50) + print("ГЛАВНОЕ МЕНЮ:") + print("1. Показать граф") + print("2. Добавить вершину") + print("3. Добавить ребро") + print("4. Обход в ширину (BFS)") + print("5. Обход в глубину (DFS)") + print("6. Найти путь") + print("7. Создать новый пример") + print("0. Выход") + print("="*50) + + choice = input("Выберите действие (0-7): ").strip() + + if choice == "1": + graph.show_graph() + + elif choice == "2": + vertex = input("Введите имя вершины: ").strip() + graph.add_vertex(vertex) + + elif choice == "3": + v1 = input("Введите первую вершину: ").strip() + v2 = input("Введите вторую вершину: ").strip() + graph.add_edge(v1, v2) + + elif choice == "4": + start = input("Введите начальную вершину: ").strip() + graph.bfs(start) + + elif choice == "5": + start = input("Введите начальную вершину: ").strip() + graph.dfs(start) + + elif choice == "6": + start = input("Введите начальную вершину: ").strip() + target = input("Введите конечную вершину: ").strip() + graph.find_path(start, target) + + elif choice == "7": + graph = SimpleGraph() + print("Создан новый пустой граф") + + elif choice == "0": + print("До свидания!") + break + + else: + print("Неверный выбор. Попробуйте снова.") + +if __name__ == "__main__": + # Запускаем тесты + test_simple_graph() + test_path_finding() + + print("\n✓ Все тесты пройдены!") + print("Запуск приложения...\n") + + # Запускаем приложение + main() +``` + +## Задание 3 + +```python +from collections import deque + +class Graph: + def __init__(self, directed=False): + self.adjacency_list = {} + self.directed = directed + + def add_vertex(self, vertex): + if vertex not in self.adjacency_list: + self.adjacency_list[vertex] = [] + return True + return False + + def add_edge(self, vertex1, vertex2): + if vertex1 not in self.adjacency_list: + self.add_vertex(vertex1) + if vertex2 not in self.adjacency_list: + self.add_vertex(vertex2) + + if vertex2 not in self.adjacency_list[vertex1]: + self.adjacency_list[vertex1].append(vertex2) + + if not self.directed and vertex1 not in self.adjacency_list[vertex2]: + self.adjacency_list[vertex2].append(vertex1) + + def display(self): + print("Граф (список смежности):") + for vertex in sorted(self.adjacency_list.keys()): + print(f"{vertex}: {sorted(self.adjacency_list[vertex])}") + + def bfs(self, start_vertex): + if start_vertex not in self.adjacency_list: + return [] + + visited = set() + queue = deque([start_vertex]) + result = [] + + while queue: + current_vertex = queue.popleft() + + if current_vertex not in visited: + visited.add(current_vertex) + result.append(current_vertex) + + for neighbor in self.adjacency_list[current_vertex]: + if neighbor not in visited: + queue.append(neighbor) + + return result + + def get_vertices(self): + return list(self.adjacency_list.keys()) + +def analyze_connectivity(graph): + """ + Анализ компонент связности графа + Возвращает список компонент связности + """ + if not graph: + return [] + + visited = set() + components = [] + + for vertex in graph.get_vertices(): + if vertex not in visited: + component = graph.bfs(vertex) + components.append(component) + visited.update(component) + + return components + +def is_connected_graph(graph): + """ + Проверка, является ли граф связным + """ + components = analyze_connectivity(graph) + return len(components) == 1 + +def test_connected_graph(): + """Тест связного графа""" + print("=== ТЕСТ 1: СВЯЗНЫЙ ГРАФ ===") + g = Graph() + g.add_edge(1, 2) + g.add_edge(2, 3) + g.add_edge(3, 4) + g.add_edge(4, 1) + + components = analyze_connectivity(g) + assert len(components) == 1, "Связный граф должен иметь 1 компоненту" + assert is_connected_graph(g) == True, "Граф должен быть связным" + + print("✓ Тест связного графа пройден") + +def test_disconnected_graph(): + """Тест несвязного графа""" + print("=== ТЕСТ 2: НЕСВЯЗНЫЙ ГРАФ ===") + g = Graph() + g.add_edge(1, 2) + g.add_edge(2, 3) + g.add_edge(4, 5) + g.add_edge(5, 6) + + components = analyze_connectivity(g) + assert len(components) == 2, "Несвязный граф должен иметь 2 компоненты" + assert is_connected_graph(g) == False, "Граф не должен быть связным" + + # Проверяем состав компонент + component_sizes = [len(comp) for comp in components] + assert 3 in component_sizes, "Должна быть компонента размера 3" + + print("✓ Тест несвязного графа пройден") + +def demonstrate_analysis(): + """ + Демонстрация работы анализа связности + """ + print("=== ЗАДАНИЕ 3: АНАЛИЗ КОМПОНЕНТ СВЯЗНОСТИ ===") + + # Создаем тестовые графы + print("\n1. Связный граф:") + g1 = Graph() + g1.add_edge('A', 'B') + g1.add_edge('A', 'C') + g1.add_edge('B', 'D') + g1.add_edge('C', 'E') + g1.add_edge('D', 'E') + g1.display() + + components1 = analyze_connectivity(g1) + print(f"Компоненты связности: {components1}") + print(f"Граф связный: {is_connected_graph(g1)}") + + print("\n2. Несвязный граф (2 компоненты):") + g2 = Graph() + g2.add_edge('A', 'B') + g2.add_edge('B', 'C') + g2.add_edge('D', 'E') + g2.add_edge('E', 'F') + g2.display() + + components2 = analyze_connectivity(g2) + print(f"Компоненты связности: {components2}") + print(f"Граф связный: {is_connected_graph(g2)}") + +if __name__ == "__main__": + # Запуск тестов + test_connected_graph() + test_disconnected_graph() + + print("\n✓ Все тесты пройдены! Демонстрация работы...") + + # Демонстрация работы + demonstrate_analysis() +``` + +## Задание 4: Поиск кратчайшего пути BFS (1→6) + +```python +import heapq + +def dijkstra(graph, start, end): + distances = {node: float('inf') for node in graph} + distances[start] = 0 + previous = {node: None for node in graph} + queue = [(0, start)] + + while queue: + current_distance, current_node = heapq.heappop(queue) + + if current_distance > distances[current_node]: + continue + + if current_node == end: + break + + for neighbor, weight in graph.get(current_node, []): + distance = current_distance + weight + if distance < distances[neighbor]: + distances[neighbor] = distance + previous[neighbor] = current_node + heapq.heappush(queue, (distance, neighbor)) + + # Восстанавливаем путь + path = [] + current = end + while current is not None: + path.append(current) + current = previous[current] + path.reverse() + + if distances[end] == float('inf'): + return None, float('inf') + return path, distances[end] + +# Ориентированный граф +graph = { + 1: [(2, 1), (4, 8), (5, 25), (7, 20)], + 2: [(3, 2), (7, 15)], + 3: [(6, 3)], + 4: [(5, 9)], + 5: [(7, 6)], + 6: [(7, 4)], + 7: [] +} + +start_vertex = 1 +end_vertex = 6 + +path, distance = dijkstra(graph, start_vertex, end_vertex) + +if path: + print(f"Кратчайший путь из {start_vertex} в {end_vertex}: {' -> '.join(map(str, path))}") + print(f"Длина пути: {distance}") +else: + print(f"Пути из {start_vertex} в {end_vertex} не существует") +``` + +## Задание 5: Алгоритм Дейкстры (2→8) + +```python +import heapq + +def dijkstra(graph, start, end): + distances = {node: float('inf') for node in graph} + distances[start] = 0 + previous = {node: None for node in graph} + queue = [(0, start)] + + while queue: + current_distance, current_node = heapq.heappop(queue) + + if current_distance > distances[current_node]: + continue + + if current_node == end: + break + + for neighbor, weight in graph[current_node]: + distance = current_distance + weight + if distance < distances[neighbor]: + distances[neighbor] = distance + previous[neighbor] = current_node + heapq.heappush(queue, (distance, neighbor)) + + path = [] + current = end + while current is not None: + path.append(current) + current = previous[current] + path.reverse() + + return path, distances[end] + + +graph = { + 1: [(2, 12), (7, 2), (3, 20)], + 2: [(1, 12), (8, 12)], + 3: [(1, 20), (8, 3), (4, 17), (5, 12)], + 4: [(3, 17), (5, 5), (7, 11), (6, 6)], + 5: [(3, 12), (4, 5), (7, 16), (6, 13)], + 6: [(4, 6), (5, 13), (7, 4), (8, 17)], + 7: [(1, 2), (4, 11), (5, 16), (6, 4)], + 8: [(2, 12), (3, 3), (6, 17)] +} + +start_vertex = 2 +end_vertex = 8 + +path, distance = dijkstra(graph, start_vertex, end_vertex) + +print(f"Кратчайший путь из {start_vertex} в {end_vertex}: {' -> '.join(map(str, path))}") +print(f"Длина пути: {distance}") +``` + +## Задание 6 + +```python +import heapq + +class DijkstraAlgorithm: + def __init__(self, graph): + """ + Инициализация алгоритма Дейкстры + + Args: + graph (dict): Граф в формате {вершина: [(сосед, вес), ...]} + """ + self.graph = graph + self.distances = {} + self.previous = {} + self.visited = set() + + def find_shortest_path(self, start, end): + """ + Поиск кратчайшего пути между вершинами + + Args: + start: Начальная вершина + end: Конечная вершина + + Returns: + tuple: (путь, длина) или (None, inf) если путь не существует + """ + # Проверка существования вершин + if start not in self.graph or end not in self.graph: + return None, float('inf') + + # Инициализация + self.distances = {node: float('inf') for node in self.graph} + self.previous = {node: None for node in self.graph} + self.distances[start] = 0 + self.visited = set() + + # Очередь с приоритетом (мин-куча) + priority_queue = [(0, start)] + + while priority_queue: + current_distance, current_node = heapq.heappop(priority_queue) + + # Пропускаем устаревшие записи + if current_distance > self.distances[current_node]: + continue + + # Если достигли конечной вершины + if current_node == end: + break + + self.visited.add(current_node) + + # Обработка соседей текущей вершины + for neighbor, weight in self.graph.get(current_node, []): + if neighbor in self.visited: + continue + + new_distance = current_distance + weight + + # Обновление расстояния если нашли короче + if new_distance < self.distances[neighbor]: + self.distances[neighbor] = new_distance + self.previous[neighbor] = current_node + heapq.heappush(priority_queue, (new_distance, neighbor)) + + return self._reconstruct_path(start, end) + + def _reconstruct_path(self, start, end): + """Восстановление пути от конечной вершины к начальной""" + if self.distances[end] == float('inf'): + return None, float('inf') + + path = [] + current = end + + # Восстанавливаем путь в обратном порядке + while current is not None: + path.append(current) + current = self.previous[current] + + path.reverse() + + # Проверка что путь начинается с start + if path[0] != start: + return None, float('inf') + + return path, self.distances[end] + + def print_path_info(self, start, end): + """Вывод информации о пути""" + path, distance = self.find_shortest_path(start, end) + + if path: + print(f"Кратчайший путь из {start} в {end}:") + print(" → ".join(map(str, path))) + print(f"Длина пути: {distance}") + print(f"Количество рёбер: {len(path) - 1}") + else: + print(f"Пути из {start} в {end} не существует") + + +# Граф из задания 5 (ориентированный) +graph_task5 = { + 1: [(2, 12), (7, 2), (3, 20)], + 2: [(1, 12), (8, 12)], + 3: [(1, 20), (8, 3), (4, 17), (5, 12)], + 4: [(3, 17), (5, 5), (7, 11), (6, 6)], + 5: [(3, 12), (4, 5), (7, 16), (6, 13)], + 6: [(4, 6), (5, 13), (7, 4), (8, 17)], + 7: [(1, 2), (4, 11), (5, 16), (6, 4)], + 8: [(2, 12), (3, 3), (6, 17)] +} + +def main(): + print("Алгоритм Дейкстры - поиск кратчайшего пути") + print("=" * 50) + + # Создаем экземпляр алгоритма + dijkstra = DijkstraAlgorithm(graph_task5) + + # Поиск пути между вершинами 2 и 8 + start_vertex = 2 + end_vertex = 8 + + print(f"Анализ графа:") + print(f"Вершины: {list(graph_task5.keys())}") + print(f"Рёбра:") + for node in sorted(graph_task5.keys()): + for neighbor, weight in graph_task5[node]: + print(f" {node} → {neighbor} (вес: {weight})") + print() + + # Находим и выводим путь + dijkstra.print_path_info(start_vertex, end_vertex) + + # Дополнительная информация + print(f"\nРасстояния от вершины {start_vertex}:") + for node in sorted(dijkstra.distances.keys()): + dist = dijkstra.distances[node] + if dist == float('inf'): + print(f" до {node}: недостижима") + else: + print(f" до {node}: {dist}") + +if __name__ == "__main__": + main() +``` + +```python + +``` From 5b1fe258f08a55aead76dff17b0bedbed7d88e7f Mon Sep 17 00:00:00 2001 From: asonovsergey Date: Sun, 30 Nov 2025 19:49:26 +0300 Subject: [PATCH 19/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_01/Lab_01_praktika/lab_01.md | 730 ++++++++++++++++++++++++++ labs/lab_03/Untitled.md | 21 +- labs/lab_05/Laba_05_Asonov_.md | 485 ++++++++++++----- labs/lab_06/Untitled.md | 604 ++++++++++++++++----- labs/lab_06/block_table2.png | Bin 0 -> 28552 bytes labs/lab_07/Untitled.md | 270 ++-------- labs/lab_08/Untitled.md | 579 ++++++++++++++++++++ labs/lab_09/Untitled.md | 225 ++++++++ 8 files changed, 2419 insertions(+), 495 deletions(-) create mode 100644 labs/lab_06/block_table2.png create mode 100644 labs/lab_08/Untitled.md create mode 100644 labs/lab_09/Untitled.md diff --git a/labs/lab_01/Lab_01_praktika/lab_01.md b/labs/lab_01/Lab_01_praktika/lab_01.md index e1e4f5a..b21294f 100644 --- a/labs/lab_01/Lab_01_praktika/lab_01.md +++ b/labs/lab_01/Lab_01_praktika/lab_01.md @@ -227,6 +227,736 @@ plt.show() ![png](../lab_01_files/lab_01_2.png) +```python +import numpy as np +import matplotlib.pyplot as plt + +# Параметры для варианта 1/11 +R1 = 220 +Lk = 0.1 +Rk = 190 +C = 1e-6 + +# Диапазон частот +omega = np.logspace(2, 5, 1000) # от 100 до 100000 рад/с + +# 1. R-L +KU_RL = np.sqrt(36100 + 0.01 * omega**2) / np.sqrt(168100 + 0.01 * omega**2) +phi_RL = np.arctan(omega/1900) - np.arctan(omega/4100) + +# 2. L-R +KU_LR = 220 / np.sqrt(168100 + 0.01 * omega**2) +phi_LR = -np.arctan(omega/4100) + +# 3. R-C +KU_RC = 1 / np.sqrt((0.00022 * omega)**2 + 1) +phi_RC = -np.pi/2 + np.arctan(4545.45/omega) + +# 4. C-R +KU_CR = (0.00022 * omega) / np.sqrt((0.00022 * omega)**2 + 1) +phi_CR = np.arctan(4545.45/omega) + +# Создание графиков +plt.figure(figsize=(12, 10)) + +# АЧХ +plt.subplot(2, 1, 1) +plt.semilogx(omega, KU_RL, 'b', linewidth=2, label='R-L') +plt.semilogx(omega, KU_LR, 'r', linewidth=2, label='L-R') +plt.semilogx(omega, KU_RC, 'g', linewidth=2, label='R-C') +plt.semilogx(omega, KU_CR, 'm', linewidth=2, label='C-R') +plt.xlabel('ω, рад/с', fontsize=12) +plt.ylabel('K_U(ω)', fontsize=12) +plt.legend(loc='best', fontsize=10) +plt.grid(True, which='both', alpha=0.3) +plt.title('АЧХ для варианта 1/11', fontsize=14) +plt.ylim(0, 1.1) + +# ФЧХ (в градусах) +plt.subplot(2, 1, 2) +plt.semilogx(omega, np.degrees(phi_RL), 'b', linewidth=2, label='R-L') +plt.semilogx(omega, np.degrees(phi_LR), 'r', linewidth=2, label='L-R') +plt.semilogx(omega, np.degrees(phi_RC), 'g', linewidth=2, label='R-C') +plt.semilogx(omega, np.degrees(phi_CR), 'm', linewidth=2, label='C-R') +plt.xlabel('ω, рад/с', fontsize=12) +plt.ylabel('φ(ω), градусы', fontsize=12) +plt.legend(loc='best', fontsize=10) +plt.grid(True, which='both', alpha=0.3) +plt.title('ФЧХ для варианта 1/11', fontsize=14) +plt.ylim(-100, 100) + +plt.tight_layout() +plt.show() + +# Дополнительно: вывод численных значений на характерных частотах +print("Численные значения на характерных частотах:") +print("\nПри ω = 100 рад/с:") +print(f"R-L: K_U = {KU_RL[0]:.3f}, φ = {np.degrees(phi_RL[0]):.1f}°") +print(f"L-R: K_U = {KU_LR[0]:.3f}, φ = {np.degrees(phi_LR[0]):.1f}°") +print(f"R-C: K_U = {KU_RC[0]:.3f}, φ = {np.degrees(phi_RC[0]):.1f}°") +print(f"C-R: K_U = {KU_CR[0]:.3f}, φ = {np.degrees(phi_CR[0]):.1f}°") + +print("\nПри ω = 10 000 рад/с:") +idx_10k = np.argmin(np.abs(omega - 10000)) +print(f"R-L: K_U = {KU_RL[idx_10k]:.3f}, φ = {np.degrees(phi_RL[idx_10k]):.1f}°") +print(f"L-R: K_U = {KU_LR[idx_10k]:.3f}, φ = {np.degrees(phi_LR[idx_10k]):.1f}°") +print(f"R-C: K_U = {KU_RC[idx_10k]:.3f}, φ = {np.degrees(phi_RC[idx_10k]):.1f}°") +print(f"C-R: K_U = {KU_CR[idx_10k]:.3f}, φ = {np.degrees(phi_CR[idx_10k]):.1f}°") + +print("\nПри ω = 100 000 рад/с:") +print(f"R-L: K_U = {KU_RL[-1]:.3f}, φ = {np.degrees(phi_RL[-1]):.1f}°") +print(f"L-R: K_U = {KU_LR[-1]:.3f}, φ = {np.degrees(phi_LR[-1]):.1f}°") +print(f"R-C: K_U = {KU_RC[-1]:.3f}, φ = {np.degrees(phi_RC[-1]):.1f}°") +print(f"C-R: K_U = {KU_CR[-1]:.3f}, φ = {np.degrees(phi_CR[-1]):.1f}°") +``` + +```python +import numpy as np +import matplotlib.pyplot as plt + +# Параметры для варианта 1 (или 11) +R1 = 220 # Ом +Lk = 0.1 # Гн (100 мГн = 0.1 Гн) +Rk = 190 # Ом +C = 1e-6 # Ф (1.0 мкФ = 1e-6 Ф) + +# Диапазон частот +omega = np.logspace(2, 5, 1000) # от 100 до 100000 рад/с + +# 1. Случай R-L: Z1 = R1, Z2 = Rk + jωLk +def case_RL(omega): + A = Rk + B = omega * Lk + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) # phi в градусах + +# 2. Случай L-R: Z1 = Rk + jωLk, Z2 = R1 +def case_LR(omega): + A = R1 + B = 0 + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 3. Случай R-C: Z1 = R1, Z2 = -j/(ωC) +def case_RC(omega): + A = 0 + B = -1/(omega * C) + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 4. Случай C-R: Z1 = -j/(ωC), Z2 = R1 +def case_CR(omega): + A = R1 + B = 0 + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# Вычисление характеристик для всех случаев +KU_RL, phi_RL = case_RL(omega) +KU_LR, phi_LR = case_LR(omega) +KU_RC, phi_RC = case_RC(omega) +KU_CR, phi_CR = case_CR(omega) + +# Построение графиков +fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 10)) + +# АЧХ для всех случаев +ax1.semilogx(omega, KU_RL, 'b-', linewidth=2, label='R-L') +ax1.semilogx(omega, KU_LR, 'r-', linewidth=2, label='L-R') +ax1.semilogx(omega, KU_RC, 'g-', linewidth=2, label='R-C') +ax1.semilogx(omega, KU_CR, 'm-', linewidth=2, label='C-R') +ax1.set_xlabel('ω, рад/с') +ax1.set_ylabel('K_U(ω)') +ax1.set_title('АЧХ всех случаев') +ax1.grid(True, which="both", ls="-", alpha=0.2) +ax1.legend() + +# ФЧХ для всех случаев +ax2.semilogx(omega, phi_RL, 'b-', linewidth=2, label='R-L') +ax2.semilogx(omega, phi_LR, 'r-', linewidth=2, label='L-R') +ax2.semilogx(omega, phi_RC, 'g-', linewidth=2, label='R-C') +ax2.semilogx(omega, phi_CR, 'm-', linewidth=2, label='C-R') +ax2.set_xlabel('ω, рад/с') +ax2.set_ylabel('φ(ω), градусы') +ax2.set_title('ФЧХ всех случаев') +ax2.grid(True, which="both", ls="-", alpha=0.2) +ax2.legend() + +# Отдельные АЧХ для каждого случая +ax3.semilogx(omega, KU_RL, 'b-', linewidth=2, label='R-L') +ax3.semilogx(omega, KU_LR, 'r-', linewidth=2, label='L-R') +ax3.semilogx(omega, KU_RC, 'g-', linewidth=2, label='R-C') +ax3.semilogx(omega, KU_CR, 'm-', linewidth=2, label='C-R') +ax3.set_xlabel('ω, рад/с') +ax3.set_ylabel('K_U(ω)') +ax3.set_title('АЧХ (отдельные графики)') +ax3.grid(True, which="both", ls="-", alpha=0.2) +ax3.legend() + +# Отдельные ФЧХ для каждого случая +ax4.semilogx(omega, phi_RL, 'b-', linewidth=2, label='R-L') +ax4.semilogx(omega, phi_LR, 'r-', linewidth=2, label='L-R') +ax4.semilogx(omega, phi_RC, 'g-', linewidth=2, label='R-C') +ax4.semilogx(omega, phi_CR, 'm-', linewidth=2, label='C-R') +ax4.set_xlabel('ω, рад/с') +ax4.set_ylabel('φ(ω), градусы') +ax4.set_title('ФЧХ (отдельные графики)') +ax4.grid(True, which="both", ls="-", alpha=0.2) +ax4.legend() + +plt.tight_layout() +plt.show() + +# Дополнительно: построение графиков в функции lg(ω) +lg_omega = np.log10(omega) + +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6)) + +# АЧХ в функции lg(ω) +ax1.plot(lg_omega, KU_RL, 'b-', linewidth=2, label='R-L') +ax1.plot(lg_omega, KU_LR, 'r-', linewidth=2, label='L-R') +ax1.plot(lg_omega, KU_RC, 'g-', linewidth=2, label='R-C') +ax1.plot(lg_omega, KU_CR, 'm-', linewidth=2, label='C-R') +ax1.set_xlabel('lg(ω)') +ax1.set_ylabel('K_U(ω)') +ax1.set_title('АЧХ = f(lg(ω))') +ax1.grid(True, alpha=0.3) +ax1.legend() + +# ФЧХ в функции lg(ω) +ax2.plot(lg_omega, phi_RL, 'b-', linewidth=2, label='R-L') +ax2.plot(lg_omega, phi_LR, 'r-', linewidth=2, label='L-R') +ax2.plot(lg_omega, phi_RC, 'g-', linewidth=2, label='R-C') +ax2.plot(lg_omega, phi_CR, 'm-', linewidth=2, label='C-R') +ax2.set_xlabel('lg(ω)') +ax2.set_ylabel('φ(ω), градусы') +ax2.set_title('ФЧХ = f(lg(ω))') +ax2.grid(True, alpha=0.3) +ax2.legend() + +plt.tight_layout() +plt.show() + +# Вывод аналитических выражений +print("Аналитические выражения для варианта 1 (или 11):") +print("\n1. Случай R-L:") +print(" K_U(ω) = sqrt(Rk² + (ωLk)²) / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = arctg(ωLk/Rk) - arctg(ωLk/(R1 + Rk))") + +print("\n2. Случай L-R:") +print(" K_U(ω) = R1 / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = -arctg(ωLk/(R1 + Rk))") + +print("\n3. Случай R-C:") +print(" K_U(ω) = 1 / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = -π/2 + arctg(ωR1C)") + +print("\n4. Случай C-R:") +print(" K_U(ω) = ωR1C / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = arctg(1/(ωR1C))") +``` + +```python +import numpy as np +import matplotlib.pyplot as plt + +# Параметры для варианта 1 (или 11) +R1 = 220 # Ом +Lk = 0.1 # Гн (100 мГн = 0.1 Гн) +Rk = 190 # Ом +C = 1e-6 # Ф (1.0 мкФ = 1e-6 Ф) + +# Диапазон частот +omega = np.logspace(2, 5, 1000) # от 100 до 100000 рад/с +lg_omega = np.log10(omega) # десятичный логарифм частоты + +# 1. Случай R-L: Z1 = R1, Z2 = Rk + jωLk +def case_RL(omega): + A = Rk + B = omega * Lk + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) # phi в градусах + +# 2. Случай L-R: Z1 = Rk + jωLk, Z2 = R1 +def case_LR(omega): + A = R1 + B = 0 + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 3. Случай R-C: Z1 = R1, Z2 = -j/(ωC) +def case_RC(omega): + A = 0 + B = -1/(omega * C) + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 4. Случай C-R: Z1 = -j/(ωC), Z2 = R1 +def case_CR(omega): + A = R1 + B = 0 + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# Вычисление характеристик для всех случаев +KU_RL, phi_RL = case_RL(omega) +KU_LR, phi_LR = case_LR(omega) +KU_RC, phi_RC = case_RC(omega) +KU_CR, phi_CR = case_CR(omega) + +# Создание отдельных графиков для каждого случая +fig, axes = plt.subplots(2, 2, figsize=(15, 12)) + +# 1. График для случая R-L +ax1 = axes[0, 0] +ax1_achh = ax1 # левая ось для АЧХ +ax1_fchh = ax1.twinx() # правая ось для ФЧХ + +ax1_achh.plot(lg_omega, KU_RL, 'b-', linewidth=2, label='АЧХ: K_U(ω)') +ax1_fchh.plot(lg_omega, phi_RL, 'r-', linewidth=2, label='ФЧХ: φ(ω)') + +ax1_achh.set_xlabel('lg(ω)') +ax1_achh.set_ylabel('K_U(ω)', color='b') +ax1_fchh.set_ylabel('φ(ω), градусы', color='r') +ax1_achh.set_title('Случай R-L: Z1 = R1, Z2 = Rk + jωLk') +ax1_achh.grid(True, alpha=0.3) +ax1_achh.legend(loc='upper left') +ax1_fchh.legend(loc='upper right') + +# 2. График для случая L-R +ax2 = axes[0, 1] +ax2_achh = ax2 +ax2_fchh = ax2.twinx() + +ax2_achh.plot(lg_omega, KU_LR, 'b-', linewidth=2, label='АЧХ: K_U(ω)') +ax2_fchh.plot(lg_omega, phi_LR, 'r-', linewidth=2, label='ФЧХ: φ(ω)') + +ax2_achh.set_xlabel('lg(ω)') +ax2_achh.set_ylabel('K_U(ω)', color='b') +ax2_fchh.set_ylabel('φ(ω), градусы', color='r') +ax2_achh.set_title('Случай L-R: Z1 = Rk + jωLk, Z2 = R1') +ax2_achh.grid(True, alpha=0.3) +ax2_achh.legend(loc='upper left') +ax2_fchh.legend(loc='upper right') + +# 3. График для случая R-C +ax3 = axes[1, 0] +ax3_achh = ax3 +ax3_fchh = ax3.twinx() + +ax3_achh.plot(lg_omega, KU_RC, 'b-', linewidth=2, label='АЧХ: K_U(ω)') +ax3_fchh.plot(lg_omega, phi_RC, 'r-', linewidth=2, label='ФЧХ: φ(ω)') + +ax3_achh.set_xlabel('lg(ω)') +ax3_achh.set_ylabel('K_U(ω)', color='b') +ax3_fchh.set_ylabel('φ(ω), градусы', color='r') +ax3_achh.set_title('Случай R-C: Z1 = R1, Z2 = -j/(ωC)') +ax3_achh.grid(True, alpha=0.3) +ax3_achh.legend(loc='upper left') +ax3_fchh.legend(loc='upper right') + +# 4. График для случая C-R +ax4 = axes[1, 1] +ax4_achh = ax4 +ax4_fchh = ax4.twinx() + +ax4_achh.plot(lg_omega, KU_CR, 'b-', linewidth=2, label='АЧХ: K_U(ω)') +ax4_fchh.plot(lg_omega, phi_CR, 'r-', linewidth=2, label='ФЧХ: φ(ω)') + +ax4_achh.set_xlabel('lg(ω)') +ax4_achh.set_ylabel('K_U(ω)', color='b') +ax4_fchh.set_ylabel('φ(ω), градусы', color='r') +ax4_achh.set_title('Случай C-R: Z1 = -j/(ωC), Z2 = R1') +ax4_achh.grid(True, alpha=0.3) +ax4_achh.legend(loc='upper left') +ax4_fchh.legend(loc='upper right') + +plt.tight_layout() +plt.show() + +# Дополнительно: вывод аналитических выражений +print("=" * 60) +print("АНАЛИТИЧЕСКИЕ ВЫРАЖЕНИЯ ДЛЯ ВАРИАНТА 1 (или 11)") +print("=" * 60) + +print("\n1. СЛУЧАЙ R-L (Z1 = R1, Z2 = Rk + jωLk):") +print(" K_U(ω) = sqrt(Rk² + (ωLk)²) / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = arctg(ωLk/Rk) - arctg(ωLk/(R1 + Rk))") + +print("\n2. СЛУЧАЙ L-R (Z1 = Rk + jωLk, Z2 = R1):") +print(" K_U(ω) = R1 / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = -arctg(ωLk/(R1 + Rk))") + +print("\n3. СЛУЧАЙ R-C (Z1 = R1, Z2 = -j/(ωC)):") +print(" K_U(ω) = 1 / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = -π/2 + arctg(ωR1C)") + +print("\n4. СЛУЧАЙ C-R (Z1 = -j/(ωC), Z2 = R1):") +print(" K_U(ω) = ωR1C / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = arctg(1/(ωR1C))") + +print("\n" + "=" * 60) +print("Параметры цепи:") +print(f"R1 = {R1} Ом") +print(f"Lk = {Lk} Гн") +print(f"Rk = {Rk} Ом") +print(f"C = {C} Ф") +print("=" * 60) +``` + +```python +import numpy as np +import matplotlib.pyplot as plt + +# Параметры для варианта 1 (или 11) +R1 = 220 # Ом +Lk = 0.1 # Гн (100 мГн = 0.1 Гн) +Rk = 190 # Ом +C = 1e-6 # Ф (1.0 мкФ = 1e-6 Ф) + +# Диапазон частот +omega = np.logspace(2, 5, 1000) # от 100 до 100000 рад/с +lg_omega = np.log10(omega) # десятичный логарифм частоты + +# 1. Случай R-L: Z1 = R1, Z2 = Rk + jωLk +def case_RL(omega): + A = Rk + B = omega * Lk + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) # phi в градусах + +# 2. Случай L-R: Z1 = Rk + jωLk, Z2 = R1 +def case_LR(omega): + A = R1 + B = 0 + C_val = R1 + Rk + D = omega * Lk + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 3. Случай R-C: Z1 = R1, Z2 = -j/(ωC) +def case_RC(omega): + A = 0 + B = -1/(omega * C) + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# 4. Случай C-R: Z1 = -j/(ωC), Z2 = R1 +def case_CR(omega): + A = R1 + B = 0 + C_val = R1 + D = -1/(omega * C) + + KU = np.sqrt(A**2 + B**2) / np.sqrt(C_val**2 + D**2) + phi = np.arctan2(B, A) - np.arctan2(D, C_val) + return KU, np.degrees(phi) + +# Вычисление характеристик для всех случаев +KU_RL, phi_RL = case_RL(omega) +KU_LR, phi_LR = case_LR(omega) +KU_RC, phi_RC = case_RC(omega) +KU_CR, phi_CR = case_CR(omega) + +# Создание двух графиков +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6)) + +# График (а): R-L и L-R +ax1_achh = ax1 # левая ось для АЧХ +ax1_fchh = ax1.twinx() # правая ось для ФЧХ + +# АЧХ для R-L и L-R +ax1_achh.plot(lg_omega, KU_RL, 'b-', linewidth=2, label='АЧХ R-L') +ax1_achh.plot(lg_omega, KU_LR, 'b--', linewidth=2, label='АЧХ L-R') + +# ФЧХ для R-L и L-R +ax1_fchh.plot(lg_omega, phi_RL, 'r-', linewidth=2, label='ФЧХ R-L') +ax1_fchh.plot(lg_omega, phi_LR, 'r--', linewidth=2, label='ФЧХ L-R') + +ax1_achh.set_xlabel('lg(ω)') +ax1_achh.set_ylabel('K_U(ω)', color='b') +ax1_fchh.set_ylabel('φ(ω), градусы', color='r') +ax1_achh.set_title('(а) Случаи R-L и L-R') +ax1_achh.grid(True, alpha=0.3) +ax1_achh.legend(loc='upper left') +ax1_fchh.legend(loc='upper right') + +# График (б): R-C и C-R +ax2_achh = ax2 # левая ось для АЧХ +ax2_fchh = ax2.twinx() # правая ось для ФЧХ + +# АЧХ для R-C и C-R +ax2_achh.plot(lg_omega, KU_RC, 'g-', linewidth=2, label='АЧХ R-C') +ax2_achh.plot(lg_omega, KU_CR, 'g--', linewidth=2, label='АЧХ C-R') + +# ФЧХ для R-C и C-R +ax2_fchh.plot(lg_omega, phi_RC, 'm-', linewidth=2, label='ФЧХ R-C') +ax2_fchh.plot(lg_omega, phi_CR, 'm--', linewidth=2, label='ФЧХ C-R') + +ax2_achh.set_xlabel('lg(ω)') +ax2_achh.set_ylabel('K_U(ω)', color='g') +ax2_fchh.set_ylabel('φ(ω), градусы', color='m') +ax2_achh.set_title('(б) Случаи R-C и C-R') +ax2_achh.grid(True, alpha=0.3) +ax2_achh.legend(loc='upper left') +ax2_fchh.legend(loc='upper right') + +plt.tight_layout() +plt.show() + +# Дополнительно: отдельные графики для лучшей читаемости +fig2, axes2 = plt.subplots(2, 2, figsize=(15, 10)) + +# АЧХ R-L и L-R +axes2[0, 0].plot(lg_omega, KU_RL, 'b-', linewidth=2, label='R-L') +axes2[0, 0].plot(lg_omega, KU_LR, 'r-', linewidth=2, label='L-R') +axes2[0, 0].set_xlabel('lg(ω)') +axes2[0, 0].set_ylabel('K_U(ω)') +axes2[0, 0].set_title('(а) АЧХ: R-L и L-R') +axes2[0, 0].grid(True, alpha=0.3) +axes2[0, 0].legend() + +# ФЧХ R-L и L-R +axes2[0, 1].plot(lg_omega, phi_RL, 'b-', linewidth=2, label='R-L') +axes2[0, 1].plot(lg_omega, phi_LR, 'r-', linewidth=2, label='L-R') +axes2[0, 1].set_xlabel('lg(ω)') +axes2[0, 1].set_ylabel('φ(ω), градусы') +axes2[0, 1].set_title('(а) ФЧХ: R-L и L-R') +axes2[0, 1].grid(True, alpha=0.3) +axes2[0, 1].legend() + +# АЧХ R-C и C-R +axes2[1, 0].plot(lg_omega, KU_RC, 'g-', linewidth=2, label='R-C') +axes2[1, 0].plot(lg_omega, KU_CR, 'm-', linewidth=2, label='C-R') +axes2[1, 0].set_xlabel('lg(ω)') +axes2[1, 0].set_ylabel('K_U(ω)') +axes2[1, 0].set_title('(б) АЧХ: R-C и C-R') +axes2[1, 0].grid(True, alpha=0.3) +axes2[1, 0].legend() + +# ФЧХ R-C и C-R +axes2[1, 1].plot(lg_omega, phi_RC, 'g-', linewidth=2, label='R-C') +axes2[1, 1].plot(lg_omega, phi_CR, 'm-', linewidth=2, label='C-R') +axes2[1, 1].set_xlabel('lg(ω)') +axes2[1, 1].set_ylabel('φ(ω), градусы') +axes2[1, 1].set_title('(б) ФЧХ: R-C и C-R') +axes2[1, 1].grid(True, alpha=0.3) +axes2[1, 1].legend() + +plt.tight_layout() +plt.show() + +# Вывод аналитических выражений +print("=" * 70) +print("АНАЛИТИЧЕСКИЕ ВЫРАЖЕНИЯ ДЛЯ ВАРИАНТА 1 (или 11)") +print("=" * 70) + +print("\nГРУППА (а) - R-L и L-R:") +print("\nR-L (Z1 = R1, Z2 = Rk + jωLk):") +print(" K_U(ω) = sqrt(Rk² + (ωLk)²) / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = arctg(ωLk/Rk) - arctg(ωLk/(R1 + Rk))") + +print("\nL-R (Z1 = Rk + jωLk, Z2 = R1):") +print(" K_U(ω) = R1 / sqrt((R1 + Rk)² + (ωLk)²)") +print(" φ(ω) = -arctg(ωLk/(R1 + Rk))") + +print("\nГРУППА (б) - R-C и C-R:") +print("\nR-C (Z1 = R1, Z2 = -j/(ωC)):") +print(" K_U(ω) = 1 / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = -π/2 + arctg(ωR1C)") + +print("\nC-R (Z1 = -j/(ωC), Z2 = R1):") +print(" K_U(ω) = ωR1C / sqrt(1 + (ωR1C)²)") +print(" φ(ω) = arctg(1/(ωR1C))") + +print(f"\nПараметры: R1 = {R1} Ом, Lk = {Lk} Гн, Rk = {Rk} Ом, C = {C} Ф") +print("=" * 70) +``` + +```python +import numpy as np +import matplotlib.pyplot as plt + +# Параметры для варианта 1 (или 11) +R1 = 220 # Ом +Lk = 0.1 # Гн (100 мГн = 0.1 Гн) +Rk = 190 # Ом +C = 1e-6 # Ф (1.0 мкФ = 1e-6 Ф) + +# Диапазон частот +omega = np.logspace(2, 5, 1000) # от 100 до 100000 рад/с +lg_omega = np.log10(omega) # десятичный логарифм частоты + +# 1. Случай R-L: Z1 = R1, Z2 = Rk + jωLk +def case_RL(omega): + # K_U(ω) = sqrt(190² + (ω·0.1)²) / sqrt((220 + 190)² + (ω·0.1)²) + # φ(ω) = arctg(ω·0.1/190) - arctg(ω·0.1/(220 + 190)) + KU = np.sqrt(190**2 + (omega * 0.1)**2) / np.sqrt((220 + 190)**2 + (omega * 0.1)**2) + phi = np.arctan2(omega * 0.1, 190) - np.arctan2(omega * 0.1, 220 + 190) + return KU, np.degrees(phi) + +# 2. Случай L-R: Z1 = Rk + jωLk, Z2 = R1 +def case_LR(omega): + # K_U(ω) = 220 / sqrt((220 + 190)² + (ω·0.1)²) + # φ(ω) = -arctg(ω·0.1/(220 + 190)) + KU = 220 / np.sqrt((220 + 190)**2 + (omega * 0.1)**2) + phi = -np.arctan2(omega * 0.1, 220 + 190) + return KU, np.degrees(phi) + +# 3. Случай R-C: Z1 = R1, Z2 = -j/(ωC) +def case_RC(omega): + # K_U(ω) = 1 / sqrt(1 + (ω·220·1e-6)²) + # φ(ω) = -π/2 + arctg(ω·220·1e-6) + KU = 1 / np.sqrt(1 + (omega * 220 * 1e-6)**2) + phi = -np.pi/2 + np.arctan(omega * 220 * 1e-6) + return KU, np.degrees(phi) + +# 4. Случай C-R: Z1 = -j/(ωC), Z2 = R1 +def case_CR(omega): + # K_U(ω) = ω·220·1e-6 / sqrt(1 + (ω·220·1e-6)²) + # φ(ω) = arctg(1/(ω·220·1e-6)) + KU = (omega * 220 * 1e-6) / np.sqrt(1 + (omega * 220 * 1e-6)**2) + phi = np.arctan2(1, omega * 220 * 1e-6) + return KU, np.degrees(phi) + +# Вычисление характеристик для всех случаев +KU_RL, phi_RL = case_RL(omega) +KU_LR, phi_LR = case_LR(omega) +KU_RC, phi_RC = case_RC(omega) +KU_CR, phi_CR = case_CR(omega) + +# Создание двух графиков +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6)) + +# График (а): R-L и L-R +ax1_achh = ax1 +ax1_fchh = ax1.twinx() + +# АЧХ для R-L и L-R +ax1_achh.plot(lg_omega, KU_RL, 'b-', linewidth=2, label='АЧХ R-L') +ax1_achh.plot(lg_omega, KU_LR, 'b--', linewidth=2, label='АЧХ L-R') + +# ФЧХ для R-L и L-R +ax1_fchh.plot(lg_omega, phi_RL, 'r-', linewidth=2, label='ФЧХ R-L') +ax1_fchh.plot(lg_omega, phi_LR, 'r--', linewidth=2, label='ФЧХ L-R') + +ax1_achh.set_xlabel('lg(ω)') +ax1_achh.set_ylabel('K_U(ω)', color='b') +ax1_fchh.set_ylabel('φ(ω), градусы', color='r') +ax1_achh.set_title('(а) Случаи R-L и L-R\nZ1=R₁=220Ω, Z2=Rk+jωLk=190+jω·0.1') +ax1_achh.grid(True, alpha=0.3) +ax1_achh.legend(loc='upper left') +ax1_fchh.legend(loc='upper right') + +# График (б): R-C и C-R +ax2_achh = ax2 +ax2_fchh = ax2.twinx() + +# АЧХ для R-C и C-R +ax2_achh.plot(lg_omega, KU_RC, 'g-', linewidth=2, label='АЧХ R-C') +ax2_achh.plot(lg_omega, KU_CR, 'g--', linewidth=2, label='АЧХ C-R') + +# ФЧХ для R-C и C-R +ax2_fchh.plot(lg_omega, phi_RC, 'm-', linewidth=2, label='ФЧХ R-C') +ax2_fchh.plot(lg_omega, phi_CR, 'm--', linewidth=2, label='ФЧХ C-R') + +ax2_achh.set_xlabel('lg(ω)') +ax2_achh.set_ylabel('K_U(ω)', color='g') +ax2_fchh.set_ylabel('φ(ω), градусы', color='m') +ax2_achh.set_title('(б) Случаи R-C и C-R\nZ1=R₁=220Ω, Z2=-j/(ωC), C=1.0 мкФ') +ax2_achh.grid(True, alpha=0.3) +ax2_achh.legend(loc='upper left') +ax2_fchh.legend(loc='upper right') + +plt.tight_layout() +plt.show() + +# Вывод аналитических выражений с подставленными значениями +print("=" * 80) +print("АНАЛИТИЧЕСКИЕ ВЫРАЖЕНИЯ С ПОДСТАВЛЕННЫМИ ЗНАЧЕНИЯМИ (ВАРИАНТ 1/11)") +print("=" * 80) + +print("\nГРУППА (а) - R-L и L-R:") +print("\nR-L (Z1 = R1 = 220 Ом, Z2 = Rk + jωLk = 190 + jω·0.1):") +print(" K_U(ω) = sqrt(190² + (0.1ω)²) / sqrt(410² + (0.1ω)²)") +print(" φ(ω) = arctg(0.1ω/190) - arctg(0.1ω/410)") + +print("\nL-R (Z1 = Rk + jωLk = 190 + jω·0.1, Z2 = R1 = 220 Ом):") +print(" K_U(ω) = 220 / sqrt(410² + (0.1ω)²)") +print(" φ(ω) = -arctg(0.1ω/410)") + +print("\nГРУППА (б) - R-C и C-R:") +print("\nR-C (Z1 = R1 = 220 Ом, Z2 = -j/(ωC) = -j/(ω·1e-6)):") +print(" K_U(ω) = 1 / sqrt(1 + (0.00022ω)²)") +print(" φ(ω) = -90° + arctg(0.00022ω)") + +print("\nC-R (Z1 = -j/(ωC) = -j/(ω·1e-6), Z2 = R1 = 220 Ом):") +print(" K_U(ω) = 0.00022ω / sqrt(1 + (0.00022ω)²)") +print(" φ(ω) = arctg(1/(0.00022ω))") + +print("\n" + "=" * 80) +print("РАСЧЕТНЫЕ ПАРАМЕТРЫ:") +print(f"R1 = {R1} Ом") +print(f"Lk = {Lk} Гн") +print(f"Rk = {Rk} Ом") +print(f"C = {C} Ф") +print(f"R1 + Rk = {R1 + Rk} Ом") +print(f"R1·C = {R1 * C} = 0.00022") +print("=" * 80) + +# Дополнительный анализ характеристических частот +print("\nХАРАКТЕРИСТИЧЕСКИЕ ЧАСТОТЫ:") +# Для RL цепей +omega_char_RL = (R1 + Rk) / Lk +print(f"Характерная частота RL цепей: ω = (R1 + Rk)/Lk = {omega_char_RL:.1f} рад/с") + +# Для RC цепей +omega_char_RC = 1 / (R1 * C) +print(f"Характерная частота RC цепей: ω = 1/(R1·C) = {omega_char_RC:.1f} рад/с") +``` + ```python ``` diff --git a/labs/lab_03/Untitled.md b/labs/lab_03/Untitled.md index f1003dd..cf2b825 100644 --- a/labs/lab_03/Untitled.md +++ b/labs/lab_03/Untitled.md @@ -15,8 +15,11 @@ jupyter: # **Линейные списки (Linked list)** -## **Цель работы** +Асонов Сергей ИУ10-36 + +## **Цель работы** + изучение структуры данных «Линейные списки», а также основных операций над ними. @@ -472,9 +475,9 @@ class SingleLinkedList_v6(SingleLinkedList_v5): - + """Tестирование связных списков""" def test_linked_lists(): - """Компактное тестирование связных списков""" + print("ТЕСТИРОВАНИЕ СВЯЗНЫХ СПИСКОВ") print("=" * 40) @@ -786,9 +789,9 @@ def complete_sort(lst): swapped = True current_node = current_node.next - +"""Тестирование сортировки для V7""" def test_v7_sorting(): - """Тестирование сортировки для V7""" + print("\nТЕСТИРОВАНИЕ СОРТИРОВКИ V7") print("=" * 45) @@ -2118,5 +2121,13 @@ node->next = node->next->next; ``` ```python +def summ(a, b): + return a - b + +assert summ(2, 3) == 5, "Шеф все пропало" +``` + +```python +python -o ghjkl.py ``` diff --git a/labs/lab_05/Laba_05_Asonov_.md b/labs/lab_05/Laba_05_Asonov_.md index dcf33cb..86d3001 100644 --- a/labs/lab_05/Laba_05_Asonov_.md +++ b/labs/lab_05/Laba_05_Asonov_.md @@ -204,6 +204,28 @@ if __name__ == "__main__": #### Метод цепочек (Separate Chaining) +- self.buckets = [None] * capacity +- buckets: [None, None, None, None, None, None, None, None, None, None] + +- % self.capacity - берем остаток от деления на capacity для попадания в диапазон [0, capacity-1] + +#### Специальные методы Python + +def __len__(self): + return self.size # Поддержка len(hashtable) + +def __contains__(self, key): + return self.get(key) is not None # Поддержка 'key in hashtable' + +def __getitem__(self, key): + value = self.get(key) + if value is None: + raise KeyError(f"Key '{key}' not found") + return value # Поддержка hashtable[key] + +def __setitem__(self, key, value): + self.put(key, value) # Поддержка hashtable[key] = value + Каждый бакет представляет собой связный список (или другую структуру), в котором хранятся все элементы с одинаковым хеш-кодом. Операции: @@ -227,7 +249,7 @@ class HashTableOpenAddressing: self.size = size self.table = [None] * size self.count = 0 - self.load_factor_threshold = 0.7 # Порог для перехэширования + self.load_factor_threshold = 0.7 self.DELETED = object() #DELETED = object() - специальный маркер, который отличает удаленные элементы от пустых ячеек def _hash(self, key): @@ -380,8 +402,27 @@ if __name__ == "__main__": #### Метод открытой адресации (Open Addressing) +self.DELETED = object() # Уникальный объект + +Преимущества: + +- Уникальность: object() создает абсолютно уникальный объект + + - Безопасность: невозможно случайно совпадение с пользовательскими данными + + - Производительность: быстрая проверка is или == + Все элементы хранятся непосредственно в массиве. При коллизии элемент помещается в другую свободную ячейку согласно выбранной стратегии. + ###### DELETED решает фундаментальную проблему открытой адресации: + + - Сохраняет целостность цепочек пробирования + +- Позволяет повторно использовать ячейки + +- Обеспечивает корректный поиск после удалений + +Просто реализуется и эффективно работает #### Стратегии поиска свободной ячейки: Линейное пробирование: index = (hash(key) + i) % size, где i = 0, 1, 2, ... @@ -399,7 +440,7 @@ if __name__ == "__main__": ### Задание 3(Блокчейн) - + 1. Создание строки блока python block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}" @@ -428,21 +469,33 @@ python .hexdigest() Преобразует бинарный хеш в читаемую строку из 64 шестнадцатеричных символов. + +##### Генезис-блок - особый первый блок: + +index=0 - начало цепочки + +data="Genesis Block" - специальная метка + +previous_hash="0" - ссылка на "ничто" + +timestamp - время создания блокчейна + + ```python import hashlib import time class Block: def __init__(self, index, timestamp, data, previous_hash): - self.index = index # Порядковый номер блока + self.index = index self.timestamp = timestamp # Время создания блока - self.data = data # Полезная нагрузка (транзакции, информация) - self.previous_hash = previous_hash # Хеш предыдущего блока - self.hash = self.calculate_hash() # Хеш текущего блока + self.data = data + self.previous_hash = previous_hash + self.hash = self.calculate_hash() - def calculate_hash(self): # Вычисление хеша - block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}" #Создание строки блока - return hashlib.sha256(block_string.encode()).hexdigest() + def calculate_hash(self): + block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}" # Создаем строку из всех значимых данных блока + return hashlib.sha256(block_string.encode()).hexdigest() def __str__(self): return f"Block {self.index} [Hash: {self.hash}, Previous: {self.previous_hash}, Data: {self.data}]" @@ -450,11 +503,12 @@ class Block: class Blockchain: def __init__(self): self.chain = [self.create_genesis_block()] - + """ генезис-блок (первый блок) с индексом 0""" def create_genesis_block(self): return Block(0, time.time(), "Genesis Block", "0") def add_block(self, data): + """ Получаем последний блок в цепочке""" previous_block = self.chain[-1] new_block = Block( index=len(self.chain), @@ -465,12 +519,12 @@ class Blockchain: self.chain.append(new_block) def is_chain_valid(self): - for i in range(1, len(self.chain)): + for i in range(1, len(self.chain)): # Проверяем все блоки, начиная с первого после генезиса current_block = self.chain[i] previous_block = self.chain[i-1] - if current_block.hash != current_block.calculate_hash(): + if current_block.hash != current_block.calculate_hash(): # Проверка 1: Не изменились ли данные текущего блока? return False - if current_block.previous_hash != previous_block.hash: + if current_block.previous_hash != previous_block.hash: # Проверка 2: Корректная ссылка на предыдущий блок? return False return True @@ -686,7 +740,7 @@ def find_pairs_with_sum(arr, target_sum): complement = target_sum - num if complement in seen: result.append((complement, num)) - seen.add(num) + seen.add(num) #l обавляет новый элемент в множество, автоматически игнорируя дубликаты return result def test_find_pairs_with_sum(): @@ -706,9 +760,7 @@ if __name__ == "__main__": print(" Тест пройден успешно!") ``` -```python ### Задание 7(Задача на проверку анаграмм) -``` ```python def are_anagrams(str1, str2): @@ -741,178 +793,347 @@ if __name__ == "__main__": print(" Тест пройден успешно!") ``` -1. Определение хеш-таблицы -Хеш-таблица - это структура данных, которая реализует ассоциативный массив (словарь), храня пары ключ-значение. Основная задача - обеспечить быстрый доступ к данным по ключу (в среднем O(1)). +1. Определение хеш-таблицы и основная задача + +Хеш-таблица — это структура данных, которая реализует абстрактный тип данных "ассоциативный массив" (или "словарь"). Она хранит пары "ключ-значение". + +Основная задача, которую она решает — это обеспечение быстрого доступа к данным по ключу. В среднем случае, время выполнения операций (вставка, поиск, удаление) составляет O(1). + +--- + +2. Хеш-функция и ее роль -2. Хеш-функция -Хеш-функция - это функция, которая преобразует ключ произвольного размера в целочисленный индекс фиксированного диапазона. Роль: равномерно распределять ключи по ячейкам таблицы. +Хеш-функция — это детерминированная функция, которая преобразует произвольный ключ (например, строку, число, объект) в число фиксированной длины (хеш-код), которое затем используется как индекс в массиве (хеш-таблице). -3. Свойства хорошей хеш-функции -Детерминированность: одинаковые ключи → одинаковый хеш +Роль в работе хеш-таблицы: Хеш-функция равномерно распределяет ключи по ячейкам (бакетам) таблицы. Это позволяет по ключу за время O(1) вычислить позицию, где должно храниться или где следует искать соответствующее значение. -Равномерность: равномерное распределение по всему диапазону +--- + +3. Ключевые свойства хорошей хеш-функции + +1. Детерминированность: Один и тот же ключ всегда должен давать один и тот же хеш-код. +2. Равномерное распределение: Хеш-функция должна распределять ключи по всем возможным индексам максимально равномерно. Это минимизирует количество коллизий. +3. Вычислительная эффективность: Вычисление хеш-кода должно быть быстрым (желательно O(1) или O(длина ключа)). +4. Устойчивость к коллизиям (для криптографии): Для обычных хеш-таблиц это свойство менее критично, но в целом хорошая функция должна минимизировать вероятность коллизий для разных входных данных. + +--- + +4. Коллизии и почему их нельзя избежать + +Коллизия — это ситуация, когда две разные пары ключ-значение претендуют на одну и ту же ячейку хеш-таблицы, то есть h(key1) = h(key2). + +Коллизии невозможно полностью избежать из-за принципа Дирихле (или "принципа ящиков"). Хеш-функция отображает потенциально бесконечное (или очень большое) множество возможных ключей на конечное множество индексов таблицы (например, 0..N-1). Следовательно, какие-то два разных ключа неизбежно попадут в одну ячейку. -Быстрота вычисления: O(1) время вычисления +--- + +5. Коэффициент нагрузки (Load Factor) -Устойчивость к коллизиям: минимизирует вероятность коллизий +Коэффициент нагрузки (α) — это отношение количества элементов в таблице (n) к ее общему размеру (m): α = n / m. -4. Коллизии -Коллизия - ситуация, когда разные ключи имеют одинаковый хеш. Неизбежны из-за принципа Дирихле (pigeonhole principle): если ключей больше, чем ячеек, коллизии неизбежны. +Влияние на производительность: -5. Коэффициент нагрузки -Load factor = (количество элементов) / (размер таблицы). -Влияние: при высоком коэффициенте увеличивается вероятность коллизий и снижается производительность. +· Низкий α (много свободного места): Коллизии маловероятны, операции выполняются быстро, близко к O(1). +· Высокий α (таблица заполнена): Вероятность коллизий резко возрастает. Для метода цепочек поиск в длинной цепочке замедляется до O(n). Для открытой адресации увеличивается длина последовательностей проб, что также замедляет все операции. + Когда α превышает определенный порог (обычно 0.7-0.8), необходимо выполнять рехеширование. + +--- -6. Метод цепочек -Каждая ячейка содержит ссылку на связный список элементов. При коллизии новый элемент добавляется в список. +6. Принцип работы метода цепочек (Separate Chaining) -7. Метод открытой адресации -Все элементы хранятся непосредственно в массиве. При коллизии ищется следующая свободная ячейка по определенному алгоритму. +Каждая ячейка хеш-таблицы является не самим элементом, а указателем на голову связного списка (или корень другого дерева). Все элементы, чьи ключи дали один и тот же хеш (коллизия), просто добавляются в этот список. -8. Методы пробирования -Линейное: h(k, i) = (h(k) + i) % m +· Вставка: Вычисляем индекс, добавляем элемент в начало/конец списка в этой ячейке. O(1). +· Поиск: Вычисляем индекс, ищем элемент в соответствующем списке. O(длина списка). +· Удаление: Вычисляем индекс, удаляем элемент из списка. O(длина списка). -Квадратичное: h(k, i) = (h(k) + c₁i + c₂i²) % m +--- -Двойное хеширование: h(k, i) = (h₁(k) + i·h₂(k)) % m +7. Принцип работы метода открытой адресации (Open Addressing) -Наиболее эффективен двойное хеширование, так как оно уменьшает кластеризацию. +При использовании этого метода все элементы хранятся непосредственно в самом массиве хеш-таблицы. При возникновении коллизии алгоритм ищет следующую свободную ячейку внутри самой таблицы по определенному алгоритму (пробингу). -9. Преимущества и недостатки методов -Метод цепочек: +Принципиальное отличие от метода цепочек: В методе цепочек элементы с коллизиями хранятся вне основного массива (в цепочках), а в открытой адресации разрешение коллизий происходит внутри самого массива. -✓ Проще в реализации удаления +--- -✓ Устойчив к высокому load factor +8. Линейное, квадратичное пробирование и двойное хеширование -✗ Дополнительная память на указатели +· Линейное пробирование: Поиск следующей ячейки идет с фиксированным шагом (обычно 1). index = (h(key) + i) % m, где i = 0, 1, 2, ... + · Проблема: Возникает первичная кластеризация — длинные последовательности занятых ячеек, которые замедляют все операции. +· Квадратичное пробирование: Шаг поиска зависит от номера попытки квадратично. +index = (h(key) + c₁*i + c₂*i²) % m. + · Решает проблему первичной кластеризации, но может возникнуть вторичная кластеризация (элементы с одинаковым начальным хешем имеют одинаковую последовательность проб). + · Проблема: Не гарантирует, что будут проверены все ячейки. +· Двойное хеширование: Для определения шага используется вторая хеш-функция. index = (h₁(key) + i * h₂(key)) % m. + · Наиболее эффективен, так как использует две независимые хеш-функции. Это приводит к самому равномерному распределению проб и минимизирует кластеризацию. Разные ключи имеют разные последовательности проб. -Открытая адресация: +--- -✓ Лучшая локальность ссылок +9. Преимущества и недостатки метода цепочек vs открытой адресации -✓ Меньше выделений памяти +Метод цепочек Открытая адресация ++ Проще в реализации + Лучшая локальность ссылок (все данные в одном массиве), может быть быстрее из-за кеша процессора ++ Устойчив к высоким коэффициентам нагрузки (α > 1 возможен) - Сильнее страдает от высокой нагрузки, требует большей таблицы ++ Удаление тривиально - Удаление сложнее (требует пометки "удален") +- Требует дополнительной памяти на указатели - Не требует дополнительной памяти +- Хуже локальность ссылок (узлы списка разбросаны в памяти) - Высокая вероятность кластеризации (кроме двойного хеширования) -✗ Сложнее удаление, чувствителен к load factor +--- 10. Проблема удаления в открытой адресации -Простое удаление нарушает цепочку пробирования. Решение: использовать специальные маркеры (DELETED), которые игнорируются при вставке, но учитываются при поиске. -11. Сложность O(1) -В среднем случае благодаря равномерному распределению и постоянному времени доступа к ячейкам по индексу. +Простое удаление (например, установка ячейки в "пусто") нарушает целостность, потому что при поиске мы идем по последовательности проб, пока не встретим пустую ячейку. Если мы удалим элемент из середины такой последовательности, последующие элементы станут недоступными. -12. Худший случай -Все ключи попадают в одну ячейку. Сложность деградирует до O(n). Возникает при плохой хеш-функции или атаке. +Правильная реализация: При удалении ячейка помечается специальным флагом "удален" (tombstone). При вставке в такую ячейку можно помещать новый элемент. При поиске мы просто "перепрыгиваем" через такие ячейки, продолжая пробинг. -13-15. Рехеширование -Рехеширование - процесс увеличения размера таблицы и перераспределения элементов. Выполняется при достижении порогового load factor (обычно 0.7-0.8). +--- + +11. Сложность O(1) в среднем случае -Процесс: +Предполагая, что хеш-функция равномерна и коэффициент нагрузки α является константой, длина цепочек (для метода цепочек) и длина последовательностей проб (для открытой адресации) также будет константной. Поэтому для доступа к нужной ячейке или для проверки константного числа ячеек требуется O(1) времени. -Создать новую таблицу большего размера +--- -Перехешировать все элементы из старой таблицы +12. Худший случай для хеш-таблицы -Заменить старую таблицу новой +Худший случай — когда все ключи попадают в одну и ту же ячейку. -16. Структура для бакетов -Связный список - прост в реализации, эффективен для небольших цепочек. Сбалансированное дерево - лучше для длинных цепочек. +· Для метода цепочек: Все элементы оказываются в одном связном списке. Таблица вырождается в список со сложностью операций O(n). +· Для открытой адресации: Длина последовательности проб становится равна n, сложность операций также O(n). -17-18. Размер таблицы -Формула: index = hash(key) % table_size -Простой размер уменьшает кластеризацию при модульной операции. +Условия возникновения: -19. Хеш-функция для строк +1. Плохая хеш-функция, которая не распределяет ключи равномерно. +2. Злонамеренно подобранные ключи (атака на хеш-таблицу), если хеш-функция известна и не является криптостойкой. -20. -python +--- + +13. Рехеширование (Rehashing) + +Рехеширование — это процесс создания новой хеш-таблицы большего размера и пересчета хешей для всех существующих элементов с последующим их перемещением в новую таблицу. + +Для чего необходимо: Чтобы уменьшить коэффициент нагрузки и, как следствие, снизить вероятность коллизий и поддерживать высокую производительность операций. + +--- + +14. Момент для выполнения рехеширования + +Момент обычно выбирается на основе коэффициента нагрузки α. + +· Для метода цепочек порог может быть выше (например, α = 0.75 - 1.0). +· Для открытой адресации порог ниже (например, α = 0.6 - 0.75), так как она сильнее страдает от заполнения. + +Когда α превышает заданный порог, инициируется рехеширование. + +--- + +15. Процесс рехеширования + + Создается новая хеш-таблица, размер которой обычно в 1.5-2 раза больше предыдущего. Желательно, чтобы новый размер был простым числом. + Для каждого элемента из старой таблицы: + · Вычисляется новый хеш-код с использованием новой функции (или той же, но с новым размером таблицы). + · Элемент вставляется в новую таблицу. +Старая таблица освобождается из памяти. +Дальнейшие операции выполняются с новой таблицей. + +--- + +16. Структура данных для бакетов в методе цепочек + +Наиболее удобна связный список (linked list). + +Обоснование: + +· Динамический размер: Списки идеально подходят для хранения динамически изменяющегося количества элементов в бакете. +· Простота вставки/удаления: Вставка и удаление из односвязного списка выполняются за O(1), если есть указатель на предыдущий элемент (или используется двусвязный список). +· Эффективность по памяти: Требуют только дополнительной памяти на указатели. + +Альтернатива: Если бакеты становятся очень длинными из-за плохой хеш-функции или атаки, их можно заменить на сбалансированные двоичные деревья поиска (например, красно-черные). Это гарантирует O(log n) время поиска даже в худшем случае. Именно так реализовано в java.util.HashMap начиная с JDK 8. + +--- + +17. Формула для вычисления индекса + +index = hash(key) % table_size + +Операция взятия по модулю гарантирует, что полученный индекс будет находиться в диапазоне [0, table_size - 1]. + +--- + +18. Размер таблицы — простое число + +Использование простого числа в качестве размера таблицы помогает уменьшить количество коллизий, особенно если хеш-функция неидеальна. + +Причина: Многие ключи в реальных задачах имеют скрытые закономерности (например, все четные). Если размер таблицы (m) и шаги в хеш-функции имеют общие делители, то многие ячейки могут никогда не быть использованы, что усиливает кластеризацию. Простое число m минимизирует количество общих делителей, способствуя более равномерному распределению. + +--- + +19. Хеш-функция для строки + +Одна из самых распространенных и эффективных — полиномиальное хеширование. + +Формула: hash = (s[0] * p^(n-1) + s[1] * p^(n-2) + ... + s[n-1] * p^0) % m + +Где: + +· s[i] — код i-го символа строки. +· p — простое число (например, 31 или 37). +· n — длина строки. +· m — размер хеш-таблицы (модуль). + +Пример для строки "hi": +h = ('h' * 31 + 'i') % m + +Чтобы избежать переполнения и работать с большими числами, на каждом шаге лучше брать по модулю: def hash_string(s, table_size): - hash_val = 0 + h = 0 + p = 31 for char in s: - hash_val = (hash_val * 31 + ord(char)) % table_size - return hash_val - -22. Проблемы неравномерного распределения -Увеличивается количество коллизий + h = (h * p + ord(char)) % table_size + return h -Снижается производительность +--- -Возможна атака отказом в обслуживании +20. Проблемы неравномерного распределения хеш-функции -21. Выбор метода -Цепочки: когда неизвестно количество элементов, частые удаления -Открытая адресация: когда известен максимальный размер, важна производительность +· Резкое падение производительности: Возрастает количество коллизий, операции из O(1) вырождаются в O(n). +· Кластеризация: Элементы скапливаются в определенных областях таблицы, что особенно губительно для открытой адресации. +· Уязвимость к DoS-атакам: Злоумышленник может подобрать данные, которые все попадут в один бакет, и "положить" сервер, использующий хеш-таблицу. -22. Примеры применения -Кэширование (memcached, Redis) +--- -Словари в Python, HashMap в Java +21. Когда использовать цепочки, а когда открытую адресацию? -Базы данных (индексы) +Метод цепочек предпочтительнее, когда: -23. Сравнение с деревьями -Хеш-таблица: +· Неизвестно заранее количество элементов. +· Требуется стабильная производительность даже при высокой нагрузке. +· Нужна простая и надежная реализация удаления. -✓ Быстрее в среднем (O(1) vs O(log n)) +Открытая адресация предпочтительнее, когда: -✗ Нет упорядочивания, худший случай O(n) +· Важна производительность на современных процессорах (лучшая локальность кеша). +· Известен примерный размер данных, и можно выделить таблицу с запасом. +· Жесткие ограничения по памяти (не тратится на указатели). -Дерево: +--- -✓ Гарантированная O(log n), упорядоченность +22. Примеры реальных задач для хеш-таблиц -✗ Сложнее реализация, медленнее в среднем +- Словарь или кеш: Быстрый поиск определения по слову или кешированного результата по запросу. +- Удаление дубликатов: Можно за O(n) найти и удалить все дубликаты в массиве, просто добавляя элементы в хеш-таблицу. +- Подсчет частоты элементов: Ключ — элемент, значение — счетчик. За один проход по массиву можно построить частотный словарь. -24. Дубликаты ключей -Может, если значения хранятся в списке или используется мульти-хеш-таблица. +--- -25. Построение таблицы -Ключи: 12, 5, 19, 7, 26, 14, 33 -h(key) = key % 7 +23. Сравнение с сбалансированным деревом поиска -Метод цепочек: +Хеш-таблица Сбалансированное дерево (например, красно-черное) +В среднем O(1) на операцию Гарантированно O(log n) на операцию +Нет упорядоченности данных Данные упорядочены (можно обходить по порядку) +Производительность сильно зависит от хеш-функции Производительность стабильна и предсказуема +Может быть уязвима к атакам Устойчива к патологическим наборам данных +Обычно использует меньше памяти на элемент Использует больше памяти на указатели -text -0: 14 → 7 -1: 33 → 26 → 19 → 12 -2: -3: -4: -5: 5 -6: +--- -Линейное пробирование: +24. Хранение одинаковых ключей -text -0: 14 -1: 7 -2: 33 -3: 26 -4: 19 -5: 5 -6: 12 +Да, может. Это реализуется двумя основными способами: + +1. Хранение списка значений: Каждому ключу соответствует не одно значение, а список (или другая коллекция) всех значений, вставленных с этим ключом. +2. Подсчет (для мультимножеств): Значением является счетчик. При вставке существующего ключа счетчик увеличивается. + +--- + +25.Построение хеш-таблицы для ключей + +Дано: h(key) = key % 7, ключи: 12, 5, 19, 7, 26, 14, 33 + +а) Метод цепочек: + +- 12 % 7 = 5 +- 5 % 7 = 5 -> коллизия с 12 +- 19 % 7 = 5 -> коллизия с 12 и 5 +- 7 % 7 = 0 +- 26 % 7 = 5 -> коллизия +- 14 % 7 = 0 -> коллизия с 7 +- 33 % 7 = 5 -> коллизия + +Таблица (индексы 0-6): +- 0: [7] -> [14] +- 1: [] +- 2: [] +- 3: [] +- 4: [] +- 5: [12] -> [5] -> [19] -> [26] -> [33] +- 6: [] + +б) Линейное пробирование (шаг +1): + +- 12 -> 5 +- 5 -> 5 (занято) -> 6 +- 19 -> 5 (занято) -> 6 (занято) -> 0 +- 7 -> 0 (занято) -> 1 +- 26 -> 5 (занято) -> 6 (занято) -> 0 (занято) -> 1 (занято) -> 2 +- 14 -> 0 (занято) -> 1 (занято) -> 2 (занято) -> 3 +- 33 -> 5 (занято) -> 6 (занято) -> 0 (занято) -> 1 (занято) -> 2 (занято) -> 3 (занято) -> 4 + +Таблица: +- 0: 19 +- 1: 7 +- 2: 26 +- 3: 14 +- 4: 33 +- 5: 12 +- 6: 5 + +в) Квадратичное пробирование (index = (h(key) + i²) % 7): + +- 12 -> 5 +- 5 -> 5 (занято, i=1) -> (5+1)%7=6 +- 19 -> 5 (занято, i=1) -> (5+1)%7=6 (занято, i=2) -> (5+4)%7=2 +- 7 -> 0 +·-26 -> 5 (занято, i=1) -> 6 (занято, i=2) -> 2 (занято, i=3) -> (5+9)%7=0 (занято, i=4) -> (5+16)%7=0 (занято, i=5) -> (5+25)%7=2 (занято, i=6) -> (5+36)%7=6 (занято). + +Здесь видна проблема квадратичного пробирования — оно не всегда находит свободную ячейку, даже если она есть. На практике используют (h(key) + c1*i + c2*i²) и тщательно подбирают константы и размер таблицы. + +--- + +26. Поиск двух чисел с суммой X + +Алгоритм: + +- Создаем пустую хеш-таблицу (множество). +- Для каждого элемента num в массиве: + · Вычисляем complement = X - num. + · Проверяем, есть ли complement в хеш-таблице. + · Если есть — мы нашли пару (num, complement). + · Если нет — добавляем текущий num в хеш-таблицу. + +Сложность: O(n), так как каждая операция с хеш-таблицей — O(1). + +--- + +27. Поиск первого повторяющегося элемента + +Алгоритм: + +- Создаем пустую хеш-таблицу (в качестве значения можно хранить индекс первого вхождения). +- Проходим по массиву. Для каждого элемента: + · Если его уже нет в таблице, добавляем его (и его индекс). + · Если он уже есть в таблице — это и есть первый повторяющийся элемент. + +--- -26. Поиск двух чисел -python -def two_sum(nums, target): - seen = {} - for i, num in enumerate(nums): - complement = target - num - if complement in seen: - return [seen[complement], i] - seen[num] = i -27. Первый повторяющийся элемент -python -def first_duplicate(arr): - seen = set() - for num in arr: - if num in seen: - return num - seen.add(num) - 28. Идеальное хеширование -Идеальное хеширование - хеш-функция без коллизий для фиксированного набора ключей. Применяется когда набор ключей известен заранее и не изменяется (например, ключевые слова языка). -Статическое идеальное хеширование использует двухуровневую структуру, где на втором уровне для каждой ячейки строится своя хеш-функция без коллизий. +Идеальное хеширование — это техника, которая позволяет построить хеш-функцию, не имеющую коллизий для заранее известного статического набора ключей. + +Применение: Используется в случаях, когда набор ключей фиксирован и известен на этапе компиляции (например, ключевые слова в языке программирования), и требуется гарантировать константное время доступа даже в худшем случае. +Как работает: Часто используется двухуровневая схема. Хеш-функция первого уровня распределяет ключи по бакетам. Затем для каждого бакета, содержащего более одного ключа, подбирается своя собственная хеш-функция второго уровня, которая без коллизий размещает ключи этого бакета во вторичной таблице. +```python + +``` diff --git a/labs/lab_06/Untitled.md b/labs/lab_06/Untitled.md index 9964b4a..9e79af6 100644 --- a/labs/lab_06/Untitled.md +++ b/labs/lab_06/Untitled.md @@ -26,19 +26,24 @@ jupyter: Рекурсивное вычисление квадратного корня методом Ньютона - Args: - N: число, из которого извлекается корень - A: начальное приближение - E: допустимая погрешность - - Returns: - float: приближенное значение квадратного корня - + Функция принимает три параметра: + + - N - число, из которого извлекаем корень + + - A - начальное приближение (guess) + + - E - точность вычисления (epsilon) + Проверка входных данных + + - N < 0: Корень из отрицательного числа не определен в вещественных числах + + - N == 0: Корень из нуля всегда ноль + + - A ≤ 0: Начальное приближение должно быть положительным для корректной работы алгоритма ```python import math import time -from functools import wraps def sqrt_recursive(N, A, E): if N < 0: @@ -112,15 +117,33 @@ except ValueError as e: -![png](block_table.png) +![png](block_table2.png) + + +## Работа декоратора(синтаксис) +@save_intermediate_results +### Эквивалентно: +sqrt_recursive_decorated = save_intermediate_results(sqrt_recursive_decorated) + +Без @wraps теряется информация об оригинальной функции + + + Декоратор для автоматического сохранения промежуточных результатов рекурсии + + Принцип работы: + 1. Перехватывает каждый вызов функции + 2. Собирает статистику ДО выполнения функции + 3. Вызывает оригинальную функцию + 4. Собирает статистику ПОСЛЕ выполнения функции + ```python import sys import time from functools import wraps -from typing import List, Dict, Any class SqrtStats: + """Контейнер для статистики выполнения алгоритмов""" def __init__(self): self.iterations = 0 self.max_stack_depth = 0 @@ -128,26 +151,23 @@ class SqrtStats: self.intermediate_results = [] def reset(self): + """Сброс статистики перед новым запуском""" self.iterations = 0 self.max_stack_depth = 0 self.execution_time = 0 self.intermediate_results = [] -stats = SqrtStats() +stats = SqrtStats() # Единый объект для всех алгоритмов -"""Декоратор для сохранения промежуточных результатов рекурсии""" def save_intermediate_results(func): + """Декоратор для автоматического сбора статистики рекурсии""" @wraps(func) def wrapper(N, A, E, depth=0): stats.iterations += 1 stats.max_stack_depth = max(stats.max_stack_depth, depth) intermediate = { - 'depth': depth, - 'N': N, - 'A': A, - 'E': E, - 'timestamp': time.time() + 'depth': depth, 'N': N, 'A': A, 'E': E, 'timestamp': time.time() } result = func(N, A, E, depth) @@ -158,8 +178,8 @@ def save_intermediate_results(func): return result return wrapper -""" Рекурсивная реализация с ручным сохранением промежуточных результатов""" def manual_sqrt_recursive_with_storage(N, A, E): + """Рекурсивный алгоритм с ручным сбором статистики""" intermediate_results = [] stack_depth = 0 @@ -168,63 +188,43 @@ def manual_sqrt_recursive_with_storage(N, A, E): stack_depth = max(stack_depth, depth) stats.iterations += 1 + # Сохраняем состояние до вычислений intermediate_results.append({ - 'depth': depth, - 'N': n, - 'A': a, - 'E': e, - 'action': 'before_calculation' + 'depth': depth, 'N': n, 'A': a, 'E': e, 'action': 'start' }) if n < 0: raise ValueError("N должно быть неотрицательным") if n == 0: - result = 0.0 - intermediate_results.append({ - 'depth': depth, - 'result': result, - 'action': 'base_case_zero' - }) - return result + return 0.0 if a <= 0: raise ValueError("A должно быть положительным") new_A = (a + n / a) / 2 + # Сохраняем результаты вычислений intermediate_results.append({ - 'depth': depth, - 'current_A': a, - 'new_A': new_A, - 'error': abs(new_A - a), - 'action': 'calculation' + 'depth': depth, 'current_A': a, 'new_A': new_A, + 'error': abs(new_A - a), 'action': 'calculated' }) if abs(new_A - a) < e: intermediate_results.append({ - 'depth': depth, - 'result': new_A, - 'action': 'base_case_precision' + 'depth': depth, 'result': new_A, 'action': 'completed' }) return new_A - recursive_result = recursive_helper(n, new_A, e, depth + 1) - - intermediate_results.append({ - 'depth': depth, - 'final_result': recursive_result, - 'action': 'after_recursion' - }) - - return recursive_result + result = recursive_helper(n, new_A, e, depth + 1) + return result result = recursive_helper(N, A, E, 0) stats.max_stack_depth = stack_depth stats.intermediate_results = intermediate_results return result -""" Рекурсивный алгоритм с декоратором для сохранения промежуточных результатов""" @save_intermediate_results def sqrt_recursive_decorated(N, A, E, depth=0): + """Рекурсивный алгоритм с автоматическим сбором статистики через декоратор""" if N < 0: raise ValueError("N должно быть неотрицательным") if N == 0: @@ -239,8 +239,8 @@ def sqrt_recursive_decorated(N, A, E, depth=0): return sqrt_recursive_decorated(N, new_A, E, depth + 1) -""" Итеративный алгоритм со сбором статистики """ def sqrt_iterative_with_stats(N, A, E): + """Итеративный алгоритм со сбором статистики""" stats.reset() start_time = time.time() @@ -262,12 +262,8 @@ def sqrt_iterative_with_stats(N, A, E): new_A = (current_A + N / current_A) / 2 stats.intermediate_results.append({ - 'iteration': iteration, - 'current_A': current_A, - 'new_A': new_A, - 'error': abs(new_A - current_A), - 'N': N, - 'E': E + 'iteration': iteration, 'current_A': current_A, + 'new_A': new_A, 'error': abs(new_A - current_A) }) if abs(new_A - current_A) < E: @@ -278,16 +274,13 @@ def sqrt_iterative_with_stats(N, A, E): stats.execution_time = time.time() - start_time return new_A -""" Анализ максимальной глубины рекурсии """ def analyze_sqrt_stack_limit(): - original_limit = sys.getrecursionlimit() - print(f"Текущий лимит рекурсии: {original_limit}") - + """Определение максимальной безопасной глубины рекурсии""" + original_limit = sys.getrecursionlimit() # Получаем системный лимит (обычно 1000) max_safe_iterations = 0 for i in range(original_limit - 100): try: - """ Тестируем с очень маленькой точностью для максимального количества итераций""" sqrt_recursive_decorated(2, 1, 1e-300) max_safe_iterations = i except RecursionError: @@ -295,124 +288,469 @@ def analyze_sqrt_stack_limit(): return max_safe_iterations, original_limit -""" Сравнение производительности алгоритмов""" def sqrt_performance_comparison(test_cases): + """Сравнение производительности всех алгоритмов""" results = [] for N, A, E in test_cases: print(f"\nТестирование sqrt({N}) с A={A}, E={E}:") - """Рекурсивный с декоратором""" + # Рекурсивный с декоратором stats.reset() start_time = time.time() try: result1 = sqrt_recursive_decorated(N, A, E) recursive_time = time.time() - start_time - print(f"Рекурсивный (с декоратором): {result1:.10f}") - print(f" Время: {recursive_time:.6f}с, Итерации: {stats.iterations}, Глубина стека: {stats.max_stack_depth}") + print(f"Рекурсивный (декоратор): {result1:.6f}") + print(f" Время: {recursive_time:.6f}с, Итерации: {stats.iterations}, Глубина: {stats.max_stack_depth}") except Exception as e: - print(f"Рекурсивный (с декоратором): Ошибка - {e}") + print(f"Рекурсивный (декоратор): Ошибка - {e}") recursive_time = float('inf') - """ Рекурсивный с ручным сохранением """ + # Рекурсивный ручной stats.reset() start_time = time.time() try: result2 = manual_sqrt_recursive_with_storage(N, A, E) - manual_recursive_time = time.time() - start_time - print(f"Рекурсивный (ручное сохранение): {result2:.10f}") - print(f" Время: {manual_recursive_time:.6f}с, Итерации: {stats.iterations}, Глубина стека: {stats.max_stack_depth}") + manual_time = time.time() - start_time + print(f"Рекурсивный (ручной): {result2:.6f}") + print(f" Время: {manual_time:.6f}с, Итерации: {stats.iterations}, Глубина: {stats.max_stack_depth}") except Exception as e: - print(f"Рекурсивный (ручное сохранение): Ошибка - {e}") - manual_recursive_time = float('inf') + print(f"Рекурсивный (ручной): Ошибка - {e}") + manual_time = float('inf') - """ Итеративный""" + # Итеративный stats.reset() try: result3 = sqrt_iterative_with_stats(N, A, E) iterative_time = stats.execution_time - print(f"Итеративный: {result3:.10f}") + print(f"Итеративный: {result3:.6f}") print(f" Время: {iterative_time:.6f}с, Итерации: {stats.iterations}") except Exception as e: print(f"Итеративный: Ошибка - {e}") iterative_time = float('inf') - """ Проверка совпадения результатов """ + # Проверка совпадения результатов try: if abs(result1 - result2) < E and abs(result2 - result3) < E: - print(" Все алгоритмы дали одинаковый результат") + print(" Все алгоритмы дали одинаковый результат") else: - print(" Ошибка: результаты различаются") + print(" Результаты различаются") except: - print(" Невозможно сравнить результаты из-за ошибок") + print(" Невозможно сравнить результаты") results.append({ - 'N': N, - 'A': A, - 'E': E, + 'N': N, 'A': A, 'E': E, 'recursive_time': recursive_time, - 'manual_recursive_time': manual_recursive_time, + 'manual_time': manual_time, 'iterative_time': iterative_time, - 'recursive_iterations': stats.iterations, + 'iterations': stats.iterations, 'stack_depth': stats.max_stack_depth }) return results -""" Вывод сохраненных промежуточных результатов """ -def print_sqrt_intermediate_results(): - print("\nПромежуточные результаты (последний вызов):") - for i, result in enumerate(stats.intermediate_results[-10:]): +def print_intermediate_results(): + """Вывод промежуточных результатов""" + print("\nПромежуточные результаты:") + for i, result in enumerate(stats.intermediate_results[-5:]): print(f" {i+1}: {result}") -# Итог: -print("=" * 60) -print("АНАЛИЗ АЛГОРИТМОВ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ") -print("=" * 60) - -print("\n1. АНАЛИЗ ОГРАНИЧЕНИЙ РЕКУРСИИ") -max_safe_iterations, recursion_limit = analyze_sqrt_stack_limit() -print(f"Максимальное безопасное количество итераций: {max_safe_iterations}") - -test_cases = [ - (25, 5, 1e-10), - (2, 1, 1e-10), - (100, 10, 1e-12), - (1000, 30, 1e-8), - (0.25, 0.5, 1e-10), - (1, 1, 1e-15) -] - -print("\n2. СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ") -results = sqrt_performance_comparison(test_cases) - -print("\n3. СВОДНАЯ СТАТИСТИКА") -print("Алгоритм | Среднее время | Макс. итераций | Макс. глубина") -print("-" * 70) - -""" Фильтруем успешные выполнения """ -successful_results = [r for r in results if r['recursive_time'] != float('inf')] - -if successful_results: - recursive_times = [r['recursive_time'] for r in successful_results] - manual_times = [r['manual_recursive_time'] for r in successful_results] - iterative_times = [r['iterative_time'] for r in successful_results] - - print(f"Рекурсивный | {sum(recursive_times)/len(recursive_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | {max(r['stack_depth'] for r in successful_results)}") - print(f"Ручной рекурсивный | {sum(manual_times)/len(manual_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | {max(r['stack_depth'] for r in successful_results)}") - print(f"Итеративный | {sum(iterative_times)/len(iterative_times):.6f}с | {max(r['recursive_iterations'] for r in successful_results):<13} | -") -else: - print("Нет успешных выполнений для сравнения") - -print("\n4. ДЕМОНСТРАЦИЯ ПРОМЕЖУТОЧНЫХ РЕЗУЛЬТАТОВ") -stats.reset() -try: - sqrt_recursive_decorated(25, 5, 1e-10) - print_sqrt_intermediate_results() -except Exception as e: - print(f"Ошибка при демонстрации: {e}") +if __name__ == "__main__": + print("=" * 50) + print("АНАЛИЗ АЛГОРИТМОВ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ") + print("=" * 50) + + + print("\n1. АНАЛИЗ ОГРАНИЧЕНИЙ РЕКУРСИИ") + max_iterations, limit = analyze_sqrt_stack_limit() + print(f"Лимит рекурсии: {limit}") + print(f"Безопасное количество итераций: {max_iterations}") + + # Тестовые данные + test_cases = [ + (25, 5, 1e-10), + (2, 1, 1e-10), + (100, 10, 1e-12), + (1000, 30, 1e-8), + (0.25, 0.5, 1e-10), + ] + + print("\n2. СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ") + results = sqrt_performance_comparison(test_cases) + + + print("\n3. СВОДНАЯ СТАТИСТИКА") + print("Алгоритм | Время | Итерации | Глубина") + print("-" * 50) + + successful = [r for r in results if r['recursive_time'] != float('inf')] + + if successful: + recursive_times = [r['recursive_time'] for r in successful] + manual_times = [r['manual_time'] for r in successful] + iterative_times = [r['iterative_time'] for r in successful] + + print(f"Рекурсивный (декор) | {sum(recursive_times)/len(recursive_times):.6f}с | " + f"{max(r['iterations'] for r in successful):<8} | {max(r['stack_depth'] for r in successful)}") + + print(f"Рекурсивный (ручной) | {sum(manual_times)/len(manual_times):.6f}с | " + f"{max(r['iterations'] for r in successful):<8} | {max(r['stack_depth'] for r in successful)}") + + print(f"Итеративный | {sum(iterative_times)/len(iterative_times):.6f}с | " + f"{max(r['iterations'] for r in successful):<8} | -") + + + print("\n4. ДЕМОНСТРАЦИЯ ") + stats.reset() + try: + sqrt_recursive_decorated(25, 5, 1e-10) + print_intermediate_results() + except Exception as e: + print(f"Ошибка: {e}") + + print("\n" + "=" * 50) ``` +# Контрольные вопросы +## Итеративный алгоритм +— это алгоритм, который выполняет набор инструкций (тело цикла) многократно, пока не будет выполнено некоторое условие. Он использует циклы (for, while) для повторения действий. + +Пример (вычисление факториала): + +python + +def factorial_iterative(n): + + result = 1 + + for i in range(1, n + 1): + + result *= i + + return result + ## Рекурсивный алгоритм + — это алгоритм, который вызывает сам себя в своем определении для решения более мелкой версии той же задачи. Обязательно должен быть базовый случай (условие выхода), который прекращает рекурсию. + +Пример (вычисление факториала): + +python +def factorial_recursive(n): + + if n == 0 or n == 1: # Базовый случай + + return 1 + + else: # Рекурсивный случай + + return n * factorial_recursive(n - 1) +## 2. Элементы рекурсивной функции +Два обязательных элемента: + +### Базовый случай (Base Case): +Простейший случай, который решается напрямую без рекурсивных вызовов. Его назначение — остановить рекурсию и предотвратить бесконечные вызовы (и переполнение стека). + +### Рекурсивный случай (Recursive Case): +Часть функции, в которой происходит вызов самой себя с измененными (обычно упрощенными) аргументами, приближающими решение к базовому случаю. + + ## 3. Глубина рекурсии и переполнение стека +Глубина рекурсии — это максимальное количество вложенных рекурсивных вызовов функции. Она ограничена размером стека вызовов (call stack). + +Переполнение стека (Stack Overflow) возникает, когда **глубина рекурсии превышает максимально допустимый размер стека вызовов.** Стек вызовов — это специальная область памяти, где хранится информация о каждом вызове функции (аргументы, локальные переменные, адрес возврата). При слишком глубокой рекурсии эта память исчерпывается. + +### Условия возникновения: + +Отсутствие или неправильное условие базового случая. + +Слишком большая глубина рекурсии для имеющегося размера стека. + +## 4. Сравнительная таблица: Итерация vs Рекурсия +| Критерий | Итеративный подход | Рекурсивный подход | +|----------|-------------------|-------------------| +| **Читаемость кода** | Может быть менее интуитивным для рекурсивно определяемых задач (деревья, фракталы) | Часто более лаконичный и понятный, если задача имеет естественную рекурсивную структуру | +| **Использование памяти** | Экономит память, так как не использует стек вызовов для хранения промежуточных состояний | Использует больше памяти из-за стека вызовов. Каждый вызов сохраняет свое состояние в стеке | +| **Скорость выполнения** | Обычно быстрее, так как нет накладных расходов на вызовы функций и управление стеком | Обычно медленнее из-за накладных расходов на вызовы функций и работу со стеком | + +## Почему рекурсия использует больше памяти? + +Каждый рекурсивный вызов помещает в стек вызовов новый **стековый фрейм**, содержащий: +- Аргументы функции +- Локальные переменные +- Адрес возврата + +Пока функция не завершится, этот фрейм остается в стеке. При большой глубине рекурсии эти фреймы накапливаются и потребляют значительный объем памяти. + + ## 5. Предпочтительные области применения +Рекурсия предпочтительнее для: + +Задач, рекурсивных по определению: Обход деревьев и графов (DFS), синтаксический разбор, задачи с "разделяй и властвуй" (сортировка слиянием, быстрая сортировка), Ханойские башни. + +Обоснование: Код становится гораздо проще для написания и понимания, так как он напрямую отражает рекурсивную природу задачи. + +Итерация предпочтительнее для: + +Простых линейных обработок: Вычисление суммы/произведения элементов, поиск в массиве. + +Задач с ограниченной памятью: Когда важна эффективность использования памяти. + +Обоснование: Меньшие накладные расходы, полный контроль над процессом, нет риска переполнения стека. + + ## 6. Хвостовая рекурсия и преобразование + ### Хвостовая рекурсия + — это частный случай рекурсии, при котором рекурсивный вызов является последней операцией в функции перед возвратом результата. + +### Почему она важна? +Некоторые компиляторы/интерпретаторы (например, в функциональных языках) могут выполнять оптимизацию хвостовой рекурсии (TCO). TCO преобразует хвостовую рекурсию в итеративный цикл "под капотом", что позволяет избежать роста стека вызовов и делает рекурсию столь же эффективной, как и итерация. + +Пример НЕ хвостовой рекурсии (факториал): +return n * factorial(n-1) // Умножение происходит ПОСЛЕ рекурсивного вызова. + +Пример хвостовой рекурсии (факториал с аккумулятором): + +python + +def factorial_tail(n, accumulator=1): + + if n == 0: + + return accumulator + + else: + + # Умножение происходит ДО вызова, вызов - последняя операция. + + return factorial_tail(n - 1, n * accumulator) + +### Общий алгоритм преобразования рекурсии в итерацию: + + - Создайте цикл (например, while True). + + - Замените рекурсивные случаи на обновление параметров функции (которые становятся переменными цикла). + + - Базовый случай становится условием выхода из цикла (break или return). + + - Для эмуляции стека (если рекурсия не хвостовая) используйте явную структуру данных — стек. + +### Структура данных для эмуляции рекурсии: +Чаще всего используют стек (LIFO). В него помещаются задачи, которые нужно обработать. + +Пример (обход дерева в глубину): + +python +### Рекурсивный DFS (неявный стек) +def dfs_recursive(node): + if node is None: + return + print(node.value) + dfs_recursive(node.left) + dfs_recursive(node.right) + +### Итеративный DFS (явный стек) +def dfs_iterative(root): + stack = [root] + while stack: + node = stack.pop() + if node is not None: + print(node.value) + # Сначала кладем правого, потом левого, чтобы левый обработался первым. + stack.append(node.right) + stack.append(node.left) + +### Можно ли преобразовать любую рекурсивную функцию? +Да, любую рекурсивную функцию можно преобразовать в итеративную, и наоборот. Теоретически, они эквивалентны по выразительной мощности. На практике преобразование сложной рекурсии (например, с несколькими рекурсивными вызовами) может быть нетривиальным и требовать явного управления стеком. + +## 7. Преобразования и примеры функций +Преобразование итеративного цикла в рекурсию (сумма чисел от 1 до n): + +python +### Итеративная +def sum_iterative(n): + total = 0 + for i in range(1, n + 1): + total += i + return total + +### Рекурсивная +def sum_recursive(n): + if n == 1: # Базовый случай + return 1 + else: # Рекурсивный случай + return n + sum_recursive(n - 1) +Преобразование рекурсивной функции в итерацию (печать чисел от n до 1): + +python +### Рекурсивная +def print_recursive(n): + if n >= 1: + print(n) + print_recursive(n - 1) + +### Итеративная +def print_iterative(n): + for i in range(n, 0, -1): + print(i) +Числа Фибоначчи: + +python +### Итеративная (эффективная) +def fib_iterative(n): + a, b = 0, 1 + for _ in range(n): + a, b = b, a + b + return a + +### Рекурсивная (неэффективная) +def fib_recursive(n): + if n <= 1: + return n + else: + return fib_recursive(n - 1) + fib_recursive(n - 2) + +### Проблема наивного рекурсивного Фибоначчи: +Она имеет экспоненциальную временную сложность O(2^n). Это происходит потому, что функция многократно вычисляет одни и те же значения (например, fib(3) вычисляется много раз при вычислении fib(5)). + +Решение: + +Мемоизация: Кеширование уже вычисленных результатов. + +python +from functools import lru_cache + +@lru_cache(maxsize=None) +def fib_memo(n): + if n <= 1: + return n + else: + return fib_memo(n - 1) + fib_memo(n - 2) +Итеративный подход (см. выше): Имеет линейную сложность O(n) и константную память O(1). + +Динамическое программирование: Аналогично итеративному, с сохранением всех значений в массиве. + +## 8. Другие алгоритмы и трассировка +Рекурсивный факториал (преобразование): + +python +### Рекурсивная +def factorial_recursive(n): + if n == 0: + return 1 + return n * factorial_recursive(n - 1) + +### Итеративная +def factorial_iterative(n): + result = 1 + for i in range(1, n + 1): + result *= i + return result +## Рекурсивный бинарный поиск: + +python +def binary_search(arr, low, high, target): + if low > high: # Базовый случай: элемент не найден + return -1 + + mid = (low + high) // 2 + + if arr[mid] == target: # Базовый случай: элемент найден + return mid + elif arr[mid] > target: + return binary_search(arr, low, mid - 1, target) # Рекурсивный вызов для левой части + else: + return binary_search(arr, mid + 1, high, target) # Рекурсивный вызов для правой части +## Алгоритм Евклида (НОД): + +python +def gcd(a, b): + if b == 0: # Базовый случай + return a + else: # Рекурсивный случай + return gcd(b, a % b) +Трассировка f(3) для f(n) = f(n-1) + f(n-2), где f(0)=0, f(1)=1: +Дерево вызовов: + +text + f(3) + / \ + f(2) f(1) + / \ \ + f(1) f(0) 1 + / \ +1 0 +Состояние стека (упрощенно): + +Вызов f(3). Стек: [f(3)] + +f(3) вызывает f(2). Стек: [f(3), f(2)] + +f(2) вызывает f(1). Стек: [f(3), f(2), f(1)] + +f(1) возвращает 1. Стек: [f(3), f(2)] + +f(2) вызывает f(0). Стек: [f(3), f(2), f(0)] + +f(0) возвращает 0. Стек: [f(3), f(2)] + +f(2) возвращает 1 + 0 = 1. Стек: [f(3)] + +f(3) вызывает f(1). Стек: [f(3), f(1)] + +f(1) возвращает 1. Стек: [f(3)] + +f(3) возвращает 1 + 1 = 2. Стек: [] + +Количество вызовов для f(4): Всего 9 вызовов. Можно посчитать по дереву. + +## 9. Продвинутые концепции +Прямая vs Косвенная рекурсия: + +Прямая: Функция A вызывает саму себя. + +Косвенная: Функция A вызывает функцию B, которая в свою очередь вызывает функцию A. + +python +def is_even(n): + if n == 0: + return True + else: + return is_odd(n - 1) + +def is_odd(n): + if n == 0: + return False + else: + return is_even(n - 1) + +### Мемоизация +— это техника кеширования результатов выполнения функции для предотвращения повторных вычислений с одними и теми же аргументами. Она кардинально улучшает производительность рекурсивных алгоритмов с перекрывающимися подзадачами (как числа Фибоначчи). Пример был приведен выше с @lru_cache. + +Почему обход дерева часто рекурсивный? +Структура дерева рекурсивна по своей природе: у каждого узла есть поддеревья. Рекурсивный код (visit(node); visit(node.left); visit(node.right)) интуитивно понятен и лаконичен. Итеративная реализация DFS требует явного стека, а BFS — очереди, что делает код немного более сложным. + +Всегда ли рекурсия читаемее? Нет. +Для простых циклических действий итерация часто понятнее. + +Пример (сумма массива): + +python +### Итерация (очень понятно) +total = 0 +for num in arr: + total += num + +### Рекурсия (избыточно) +def sum_arr(arr, index=0): + if index == len(arr): + return 0 + return arr[index] + sum_arr(arr, index + 1) + +## Оптимизация хвостовой рекурсии (TCO) +— это техника, при которой компилятор заменяет рекурсивный вызов в хвостовой позиции на переход (jump) к началу функции. Это переиспользует текущий стековый фрейм вместо создания нового, предотвращая рост стека. Это критически важно для функциональных языков, где рекурсия — основной способ организации циклов. В Python TCO не реализована. + +## Неявный стек +— это стек вызовов, которым управляет среда выполнения (интерпретатор/компилятор). В итеративных алгоритмах обхода деревьев мы используем явный стек (обычно список Python), которым управляем вручную, чтобы имитировать работу неявного стека при рекурсии. + + + ```python ``` diff --git a/labs/lab_06/block_table2.png b/labs/lab_06/block_table2.png new file mode 100644 index 0000000000000000000000000000000000000000..b0fa7ac6806acd194ce7b63f9bd18ca6cc04b250 GIT binary patch literal 28552 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 literal 0 HcmV?d00001 diff --git a/labs/lab_07/Untitled.md b/labs/lab_07/Untitled.md index cd8378e..c83633b 100644 --- a/labs/lab_07/Untitled.md +++ b/labs/lab_07/Untitled.md @@ -178,32 +178,13 @@ class Graph: edges.append((vertex, neighbor)) return edges -def test_graph_operations(): - """Тест основных операций с графом""" - print("=== ТЕСТ 1: ОСНОВНЫЕ ОПЕРАЦИИ ===") - g = Graph() - - # Добавление вершин и ребер - g.add_vertex('A') - g.add_edge('A', 'B') - g.add_edge('B', 'C') - g.add_edge('C', 'D') - - # Проверка структуры графа - assert 'A' in g.get_vertices() - assert 'B' in g.get_vertices() - assert 'C' in g.get_vertices() - assert ('A', 'B') in g.get_edges() - assert ('B', 'C') in g.get_edges() - - print("✓ Тест основных операций пройден") def test_graph_algorithms(): """Тест алгоритмов обхода""" - print("=== ТЕСТ 2: АЛГОРИТМЫ ОБХОДА ===") + print("=== ТЕСТ: АЛГОРИТМЫ ОБХОДА ===") g = Graph() - # Создаем граф: A-B-C-D, A-E + g.add_edge('A', 'B') g.add_edge('B', 'C') g.add_edge('C', 'D') @@ -223,22 +204,22 @@ def test_graph_algorithms(): path = g.find_path_bfs('A', 'D') assert path == ['A', 'B', 'C', 'D'] or path == ['A', 'E', 'D'] - print("✓ Тест алгоритмов обхода пройден") + print(" Тест алгоритмов обхода пройден") + -# Демонстрация работы if __name__ == "__main__": print("=== ЗАДАНИЕ 1: КЛАСС GRAPH С АЛГОРИТМАМИ ОБХОДА ===") - # Запуск тестов - test_graph_operations() + + test_graph_algorithms() - print("\n=== ДЕМОНСТРАЦИЯ РАБОТЫ ===") + print("\n=== ДЕМОНСТРАЦИЯ ===") + - # Создаем граф g = Graph() - # Добавляем вершины и ребра + g.add_edge('A', 'B') g.add_edge('A', 'C') g.add_edge('B', 'D') @@ -246,18 +227,18 @@ if __name__ == "__main__": g.add_edge('D', 'E') g.add_edge('E', 'F') - # Отображаем граф + g.display() - # Тестируем алгоритмы обхода + print(f"\nDFS обход от 'A': {g.dfs('A')}") print(f"BFS обход от 'A': {g.bfs('A')}") - # Тестируем поиск путей + print(f"\nПоиск пути от 'A' до 'F' (DFS): {g.find_path_dfs('A', 'F')}") print(f"Поиск пути от 'A' до 'F' (BFS): {g.find_path_bfs('A', 'F')}") - print("\n✓ Все тесты пройдены успешно!") + print("\n Все тесты пройдены успешно!") ``` ## Задание 2 @@ -273,9 +254,9 @@ class SimpleGraph: """Добавить вершину""" if vertex not in self.adjacency_list: self.adjacency_list[vertex] = [] - print(f"✓ Вершина '{vertex}' добавлена") + print(f" Вершина '{vertex}' добавлена") else: - print(f"✗ Вершина '{vertex}' уже существует") + print(f" Вершина '{vertex}' уже существует") def add_edge(self, vertex1, vertex2): """Добавить ребро между двумя вершинами""" @@ -287,9 +268,9 @@ class SimpleGraph: if vertex2 not in self.adjacency_list[vertex1]: self.adjacency_list[vertex1].append(vertex2) self.adjacency_list[vertex2].append(vertex1) # Неориентированный граф - print(f"✓ Ребро между '{vertex1}' и '{vertex2}' добавлено") + print(f" Ребро между '{vertex1}' и '{vertex2}' добавлено") else: - print(f"✗ Ребро между '{vertex1}' и '{vertex2}' уже существует") + print(f" Ребро между '{vertex1}' и '{vertex2}' уже существует") def show_graph(self): """Показать граф""" @@ -357,10 +338,10 @@ class SimpleGraph: def find_path(self, start_vertex, target_vertex): """Найти путь между двумя вершинами""" if start_vertex not in self.adjacency_list: - print(f"✗ Вершина '{start_vertex}' не найдена") + print(f" Вершина '{start_vertex}' не найдена") return None if target_vertex not in self.adjacency_list: - print(f"✗ Вершина '{target_vertex}' не найдена") + print(f" Вершина '{target_vertex}' не найдена") return None visited = set() @@ -370,7 +351,7 @@ class SimpleGraph: current, path = queue.popleft() if current == target_vertex: - print(f"✓ Путь от '{start_vertex}' до '{target_vertex}': {' -> '.join(path)}") + print(f" Путь от '{start_vertex}' до '{target_vertex}': {' -> '.join(path)}") return path if current not in visited: @@ -380,7 +361,7 @@ class SimpleGraph: if neighbor not in visited: queue.append((neighbor, path + [neighbor])) - print(f"✗ Путь от '{start_vertex}' до '{target_vertex}' не найден") + print(f" Путь от '{start_vertex}' до '{target_vertex}' не найден") return None def test_simple_graph(): @@ -400,7 +381,7 @@ def test_simple_graph(): g.dfs('A') g.find_path('A', 'C') - print("✓ Простой тест завершен") + print(" тест завершен") def test_path_finding(): """Тест поиска пути""" @@ -413,22 +394,22 @@ def test_path_finding(): g.add_edge('C', 'D') g.add_edge('A', 'E') - # Ищем путь + path = g.find_path('A', 'D') assert path is not None, "Путь должен существовать" assert path[0] == 'A', "Начало пути должно быть A" assert path[-1] == 'D', "Конец пути должен быть D" - print("✓ Тест поиска пути завершен") + print(" Тест поиска пути завершен") def main(): """Главное меню приложения""" graph = SimpleGraph() - print("=== ПРОСТОЕ ПРИЛОЖЕНИЕ ДЛЯ РАБОТЫ С ГРАФАМИ ===") + print("=== ПРИЛОЖЕНИЕ ДЛЯ РАБОТЫ С ГРАФАМИ ===") print("Создавайте графы и изучайте алгоритмы обхода!") - # Создаем пример графа для демонстрации + # Создаем пример графа print("\nСоздаем пример графа...") graph.add_edge('Москва', 'Санкт-Петербург') graph.add_edge('Москва', 'Казань') @@ -481,183 +462,26 @@ def main(): print("Создан новый пустой граф") elif choice == "0": - print("До свидания!") + print("Пока!") break else: print("Неверный выбор. Попробуйте снова.") if __name__ == "__main__": - # Запускаем тесты + test_simple_graph() test_path_finding() - print("\n✓ Все тесты пройдены!") + print("\n Все тесты пройдены!") print("Запуск приложения...\n") - # Запускаем приложение + main() ``` ## Задание 3 -```python -from collections import deque - -class Graph: - def __init__(self, directed=False): - self.adjacency_list = {} - self.directed = directed - - def add_vertex(self, vertex): - if vertex not in self.adjacency_list: - self.adjacency_list[vertex] = [] - return True - return False - - def add_edge(self, vertex1, vertex2): - if vertex1 not in self.adjacency_list: - self.add_vertex(vertex1) - if vertex2 not in self.adjacency_list: - self.add_vertex(vertex2) - - if vertex2 not in self.adjacency_list[vertex1]: - self.adjacency_list[vertex1].append(vertex2) - - if not self.directed and vertex1 not in self.adjacency_list[vertex2]: - self.adjacency_list[vertex2].append(vertex1) - - def display(self): - print("Граф (список смежности):") - for vertex in sorted(self.adjacency_list.keys()): - print(f"{vertex}: {sorted(self.adjacency_list[vertex])}") - - def bfs(self, start_vertex): - if start_vertex not in self.adjacency_list: - return [] - - visited = set() - queue = deque([start_vertex]) - result = [] - - while queue: - current_vertex = queue.popleft() - - if current_vertex not in visited: - visited.add(current_vertex) - result.append(current_vertex) - - for neighbor in self.adjacency_list[current_vertex]: - if neighbor not in visited: - queue.append(neighbor) - - return result - - def get_vertices(self): - return list(self.adjacency_list.keys()) - -def analyze_connectivity(graph): - """ - Анализ компонент связности графа - Возвращает список компонент связности - """ - if not graph: - return [] - - visited = set() - components = [] - - for vertex in graph.get_vertices(): - if vertex not in visited: - component = graph.bfs(vertex) - components.append(component) - visited.update(component) - - return components - -def is_connected_graph(graph): - """ - Проверка, является ли граф связным - """ - components = analyze_connectivity(graph) - return len(components) == 1 - -def test_connected_graph(): - """Тест связного графа""" - print("=== ТЕСТ 1: СВЯЗНЫЙ ГРАФ ===") - g = Graph() - g.add_edge(1, 2) - g.add_edge(2, 3) - g.add_edge(3, 4) - g.add_edge(4, 1) - - components = analyze_connectivity(g) - assert len(components) == 1, "Связный граф должен иметь 1 компоненту" - assert is_connected_graph(g) == True, "Граф должен быть связным" - - print("✓ Тест связного графа пройден") - -def test_disconnected_graph(): - """Тест несвязного графа""" - print("=== ТЕСТ 2: НЕСВЯЗНЫЙ ГРАФ ===") - g = Graph() - g.add_edge(1, 2) - g.add_edge(2, 3) - g.add_edge(4, 5) - g.add_edge(5, 6) - - components = analyze_connectivity(g) - assert len(components) == 2, "Несвязный граф должен иметь 2 компоненты" - assert is_connected_graph(g) == False, "Граф не должен быть связным" - - # Проверяем состав компонент - component_sizes = [len(comp) for comp in components] - assert 3 in component_sizes, "Должна быть компонента размера 3" - - print("✓ Тест несвязного графа пройден") - -def demonstrate_analysis(): - """ - Демонстрация работы анализа связности - """ - print("=== ЗАДАНИЕ 3: АНАЛИЗ КОМПОНЕНТ СВЯЗНОСТИ ===") - - # Создаем тестовые графы - print("\n1. Связный граф:") - g1 = Graph() - g1.add_edge('A', 'B') - g1.add_edge('A', 'C') - g1.add_edge('B', 'D') - g1.add_edge('C', 'E') - g1.add_edge('D', 'E') - g1.display() - - components1 = analyze_connectivity(g1) - print(f"Компоненты связности: {components1}") - print(f"Граф связный: {is_connected_graph(g1)}") - - print("\n2. Несвязный граф (2 компоненты):") - g2 = Graph() - g2.add_edge('A', 'B') - g2.add_edge('B', 'C') - g2.add_edge('D', 'E') - g2.add_edge('E', 'F') - g2.display() - - components2 = analyze_connectivity(g2) - print(f"Компоненты связности: {components2}") - print(f"Граф связный: {is_connected_graph(g2)}") - -if __name__ == "__main__": - # Запуск тестов - test_connected_graph() - test_disconnected_graph() - - print("\n✓ Все тесты пройдены! Демонстрация работы...") - - # Демонстрация работы - demonstrate_analysis() -``` ## Задание 4: Поиск кратчайшего пути BFS (1→6) @@ -698,7 +522,7 @@ def dijkstra(graph, start, end): return None, float('inf') return path, distances[end] -# Ориентированный граф + graph = { 1: [(2, 1), (4, 8), (5, 25), (7, 20)], 2: [(3, 2), (7, 15)], @@ -807,40 +631,40 @@ class DijkstraAlgorithm: Returns: tuple: (путь, длина) или (None, inf) если путь не существует """ - # Проверка существования вершин + """ Проверка существования вершин """ if start not in self.graph or end not in self.graph: return None, float('inf') - # Инициализация + """ Инициализация""" self.distances = {node: float('inf') for node in self.graph} self.previous = {node: None for node in self.graph} self.distances[start] = 0 self.visited = set() - # Очередь с приоритетом (мин-куча) + """ Очередь с приоритетом (мин-куча) """ priority_queue = [(0, start)] while priority_queue: current_distance, current_node = heapq.heappop(priority_queue) - # Пропускаем устаревшие записи + """ Пропускаем устаревшие записи """ if current_distance > self.distances[current_node]: continue - # Если достигли конечной вершины + if current_node == end: break self.visited.add(current_node) - # Обработка соседей текущей вершины + """ Обработка соседей текущей вершины """ for neighbor, weight in self.graph.get(current_node, []): if neighbor in self.visited: continue new_distance = current_distance + weight - # Обновление расстояния если нашли короче + """ Обновление расстояния если нашли короче """ if new_distance < self.distances[neighbor]: self.distances[neighbor] = new_distance self.previous[neighbor] = current_node @@ -856,14 +680,14 @@ class DijkstraAlgorithm: path = [] current = end - # Восстанавливаем путь в обратном порядке + """ Восстанавливаем путь в обратном порядке """ while current is not None: path.append(current) current = self.previous[current] path.reverse() - # Проверка что путь начинается с start + if path[0] != start: return None, float('inf') @@ -882,7 +706,7 @@ class DijkstraAlgorithm: print(f"Пути из {start} в {end} не существует") -# Граф из задания 5 (ориентированный) + graph_task5 = { 1: [(2, 12), (7, 2), (3, 20)], 2: [(1, 12), (8, 12)], @@ -898,10 +722,10 @@ def main(): print("Алгоритм Дейкстры - поиск кратчайшего пути") print("=" * 50) - # Создаем экземпляр алгоритма + dijkstra = DijkstraAlgorithm(graph_task5) - # Поиск пути между вершинами 2 и 8 + start_vertex = 2 end_vertex = 8 @@ -913,10 +737,10 @@ def main(): print(f" {node} → {neighbor} (вес: {weight})") print() - # Находим и выводим путь + dijkstra.print_path_info(start_vertex, end_vertex) - # Дополнительная информация + print(f"\nРасстояния от вершины {start_vertex}:") for node in sorted(dijkstra.distances.keys()): dist = dijkstra.distances[node] @@ -928,7 +752,3 @@ def main(): if __name__ == "__main__": main() ``` - -```python - -``` diff --git a/labs/lab_08/Untitled.md b/labs/lab_08/Untitled.md new file mode 100644 index 0000000..e54cc00 --- /dev/null +++ b/labs/lab_08/Untitled.md @@ -0,0 +1,579 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Лабораторная работа 8 + + +## Задание 1: Бинарное дерево поиска + +```python +class Node: + def __init__(self, value): + self.value = value + self.left = None + self.right = None + +class BinarySearchTree: + def __init__(self): + self.root = None + + def is_empty(self): + return self.root is None + + def insert(self, value): + if self._is_valid_value(value): + self.root = self._insert_recursive(self.root, value) + return True + return False + + def _insert_recursive(self, node, value): + if node is None: + return Node(value) + + if value < node.value: + node.left = self._insert_recursive(node.left, value) + elif value > node.value: + node.right = self._insert_recursive(node.right, value) + + return node + + def search(self, value): + if not self._is_valid_value(value): + return None + + return self._search_recursive(self.root, value) + + def _search_recursive(self, node, value): + if node is None or node.value == value: + return node + + if value < node.value: + return self._search_recursive(node.left, value) + else: + return self._search_recursive(node.right, value) + + def delete(self, value): + if not self._is_valid_value(value) or self.is_empty(): + return False + + if self.search(value) is None: + return False + + self.root = self._delete_recursive(self.root, value) + return True + + def _delete_recursive(self, node, value): + if node is None: + return node + + if value < node.value: + node.left = self._delete_recursive(node.left, value) + elif value > node.value: + node.right = self._delete_recursive(node.right, value) + else: + if node.left is None: + return node.right + elif node.right is None: + return node.left + temp = self._min_value_node(node.right) + node.value = temp.value + node.right = self._delete_recursive(node.right, temp.value) + + return node + + def _min_value_node(self, node): + current = node + while current.left is not None: + current = current.left + return current + + def preorder_traversal(self): + result = [] + self._preorder_recursive(self.root, result) + return result + + def _preorder_recursive(self, node, result): + if node: + result.append(node.value) + self._preorder_recursive(node.left, result) + self._preorder_recursive(node.right, result) + + def inorder_traversal(self): + result = [] + self._inorder_recursive(self.root, result) + return result + + def _inorder_recursive(self, node, result): + if node: + self._inorder_recursive(node.left, result) + result.append(node.value) + self._inorder_recursive(node.right, result) + + def postorder_traversal(self): + result = [] + self._postorder_recursive(self.root, result) + return result + + def _postorder_recursive(self, node, result): + if node: + self._postorder_recursive(node.left, result) + self._postorder_recursive(node.right, result) + result.append(node.value) + + def height(self): + return self._height_recursive(self.root) + + def _height_recursive(self, node): + if node is None: + return -1 + + left_height = self._height_recursive(node.left) + right_height = self._height_recursive(node.right) + + return max(left_height, right_height) + 1 + + def print_tree(self): + if self.is_empty(): + print("Дерево пустое") + return + + lines = self._build_tree_display() + for line in lines: + print(line) + + def _build_tree_display(self): + if self.root is None: + return [] + + def _build_recursive(node, prefix="", is_left=True): + if node is None: + return [] + + result = [] + line = prefix + ("└── " if is_left else "├── ") + str(node.value) + result.append(line) + + children = [] + if node.left or node.right: + if node.left: + children.append((node.left, True)) + if node.right: + children.append((node.right, False)) + + for i, (child, is_left_child) in enumerate(children): + child_prefix = prefix + (" " if is_left else "│ ") + child_lines = _build_recursive(child, child_prefix, is_left_child) + result.extend(child_lines) + + return result + + return _build_recursive(self.root, "", True) + + def _is_valid_value(self, value): + return value is not None + + + +bst = BinarySearchTree() + +print("Дерево пустое?", bst.is_empty()) + +values = [50, 30, 70, 20, 40, 60, 80] +for value in values: + bst.insert(value) + +print("\nПосле добавления элементов:") +print("Дерево пустое?", bst.is_empty()) + +print("\nСтруктура дерева:") +bst.print_tree() + +print("\nПрямой обход:", bst.preorder_traversal()) +print("Симметричный обход:", bst.inorder_traversal()) +print("Обратный обход:", bst.postorder_traversal()) + +search_value = 40 +found = bst.search(search_value) +print(f"\nПоиск значения {search_value}: {'найден' if found else 'не найден'}") + +print(f"Высота дерева: {bst.height()}") + +delete_value = 30 +bst.delete(delete_value) +print(f"\nУдаление значения {delete_value}: успешно") + +print("\nСтруктура дерева после удаления:") +bst.print_tree() + +print("\nСимметричный обход после удаления:", bst.inorder_traversal()) +print(f"Высота дерева после удаления: {bst.height()}") +``` + +## Задание 2: AVL-дерево + +```python +class AVLNode: + def __init__(self, value): + self.value = value + self.left = None + self.right = None + self.height = 1 + +class AVLTree: + def __init__(self): + self.root = None + + def is_empty(self): + return self.root is None + + def _get_height(self, node): + if node is None: + return 0 + return node.height + + def _get_balance(self, node): + if node is None: + return 0 + return self._get_height(node.left) - self._get_height(node.right) + + def _update_height(self, node): + if node is not None: + node.height = 1 + max(self._get_height(node.left), + self._get_height(node.right)) + + def _rotate_right(self, y): + x = y.left + T2 = x.right + + x.right = y + y.left = T2 + + self._update_height(y) + self._update_height(x) + + return x + + def _rotate_left(self, x): + y = x.right + T2 = y.left + + y.left = x + x.right = T2 + + self._update_height(x) + self._update_height(y) + + return y + + def insert(self, value): + if self._is_valid_value(value): + self.root = self._insert_recursive(self.root, value) + return True + return False + + def _insert_recursive(self, node, value): + if node is None: + return AVLNode(value) + + if value < node.value: + node.left = self._insert_recursive(node.left, value) + elif value > node.value: + node.right = self._insert_recursive(node.right, value) + else: + return node + + self._update_height(node) + + balance = self._get_balance(node) + + + if balance > 1 and value < node.left.value: + return self._rotate_right(node) + + if balance < -1 and value > node.right.value: + return self._rotate_left(node) + + if balance > 1 and value > node.left.value: + node.left = self._rotate_left(node.left) + return self._rotate_right(node) + + if balance < -1 and value < node.right.value: + node.right = self._rotate_right(node.right) + return self._rotate_left(node) + + return node + + def search(self, value): + if not self._is_valid_value(value): + return None + + return self._search_recursive(self.root, value) + + def _search_recursive(self, node, value): + if node is None or node.value == value: + return node + + if value < node.value: + return self._search_recursive(node.left, value) + else: + return self._search_recursive(node.right, value) + + def delete(self, value): + if not self._is_valid_value(value) or self.is_empty(): + return False + + if self.search(value) is None: + return False + + self.root = self._delete_recursive(self.root, value) + return True + + def _delete_recursive(self, node, value): + if node is None: + return node + + if value < node.value: + node.left = self._delete_recursive(node.left, value) + elif value > node.value: + node.right = self._delete_recursive(node.right, value) + else: + if node.left is None: + return node.right + elif node.right is None: + return node.left + + temp = self._min_value_node(node.right) + node.value = temp.value + node.right = self._delete_recursive(node.right, temp.value) + + if node is None: + return node + + self._update_height(node) + + balance = self._get_balance(node) + + if balance > 1 and self._get_balance(node.left) >= 0: + return self._rotate_right(node) + + if balance > 1 and self._get_balance(node.left) < 0: + node.left = self._rotate_left(node.left) + return self._rotate_right(node) + + if balance < -1 and self._get_balance(node.right) <= 0: + return self._rotate_left(node) + + if balance < -1 and self._get_balance(node.right) > 0: + node.right = self._rotate_right(node.right) + return self._rotate_left(node) + + return node + + def _min_value_node(self, node): + current = node + while current.left is not None: + current = current.left + return current + + def preorder_traversal(self): + result = [] + self._preorder_recursive(self.root, result) + return result + + def _preorder_recursive(self, node, result): + if node: + result.append(node.value) + self._preorder_recursive(node.left, result) + self._preorder_recursive(node.right, result) + + def inorder_traversal(self): + result = [] + self._inorder_recursive(self.root, result) + return result + + def _inorder_recursive(self, node, result): + if node: + self._inorder_recursive(node.left, result) + result.append(node.value) + self._inorder_recursive(node.right, result) + + def postorder_traversal(self): + result = [] + self._postorder_recursive(self.root, result) + return result + + def _postorder_recursive(self, node, result): + if node: + self._postorder_recursive(node.left, result) + self._postorder_recursive(node.right, result) + result.append(node.value) + + def height(self): + return self._get_height(self.root) + + def print_tree(self): + if self.is_empty(): + print("Дерево пустое") + return + + lines = self._build_tree_display() + for line in lines: + print(line) + + def _build_tree_display(self): + if self.root is None: + return [] + + def _build_recursive(node, prefix="", is_left=True): + if node is None: + return [] + + balance = self._get_balance(node) + node_info = f"{node.value}(h:{node.height},b:{balance})" + + result = [] + line = prefix + ("└── " if is_left else "├── ") + node_info + result.append(line) + + children = [] + if node.left or node.right: + if node.left: + children.append((node.left, True)) + if node.right: + children.append((node.right, False)) + + for i, (child, is_left_child) in enumerate(children): + child_prefix = prefix + (" " if is_left else "│ ") + child_lines = _build_recursive(child, child_prefix, is_left_child) + result.extend(child_lines) + + return result + + return _build_recursive(self.root, "", True) + + def _is_valid_value(self, value): + return value is not None + + def is_balanced(self): + return self._check_balanced(self.root) + + def _check_balanced(self, node): + if node is None: + return True + + balance = self._get_balance(node) + if abs(balance) > 1: + return False + + return self._check_balanced(node.left) and self._check_balanced(node.right) + + +avl = AVLTree() + +print("AVL-дерево пустое?", avl.is_empty()) + +print("\nДобавление элементов в AVL-дерево:") +values = [10, 20, 30, 40, 50, 25] + +for value in values: + avl.insert(value) + print(f"После добавления {value}:") + print("Сбалансировано:", avl.is_balanced()) + print("Высота:", avl.height()) + +print("\nСтруктура AVL-дерева:") +avl.print_tree() + +print("\nПрямой обход:", avl.preorder_traversal()) +print("Симметричный обход (отсортированный):", avl.inorder_traversal()) +print("Обратный обход:", avl.postorder_traversal()) + +search_value = 30 +found = avl.search(search_value) +print(f"\nПоиск значения {search_value}: {'найден' if found else 'не найден'}") + +print(f"Высота дерева: {avl.height()}") +print(f"Дерево сбалансировано: {avl.is_balanced()}") + +delete_value = 30 +print(f"\nУдаление значения {delete_value}: {'успешно' if avl.delete(delete_value) else 'не удалось'}") + +print("\nСтруктура AVL-дерева после удаления:") +avl.print_tree() + +print("\nСимметричный обход после удаления:", avl.inorder_traversal()) +print(f"Высота дерева после удаления: {avl.height()}") +print(f"Дерево сбалансировано после удаления: {avl.is_balanced()}") + +print("\n" + "="*50) +print("Демонстрация балансировки AVL-дерева:") + +critical_avl = AVLTree() +critical_values = [1, 2, 3, 4, 5, 6, 7] + +print("\nДобавление последовательности, создающей вырожденное дерево в обычном BST:") +for value in critical_values: + critical_avl.insert(value) + print(f"После {value}: высота = {critical_avl.height()}, сбалансировано = {critical_avl.is_balanced()}") + +print("\nИтоговая структура AVL-дерева:") +critical_avl.print_tree() +print(f"Высота сбалансированного AVL-дерева: {critical_avl.height()}") +print(f"Высота вырожденного BST для тех же данных: {len(critical_values) - 1}") +``` + +## Задание 3 + + +```python +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +def find_unbalanced_vertices(root): + result = [] + + def count_nodes(node): + if not node: + return 0 + + left = count_nodes(node.left) + right = count_nodes(node.right) + + if left != right: + result.append(node.val) + + return left + right + 1 + + count_nodes(root) + return result + +# ПРОВЕРКА +root = TreeNode(1) +root.left = TreeNode(2) +root.right = TreeNode(3) +root.left.left = TreeNode(4) +root.right.left = TreeNode(5) +root.right.right = TreeNode(6) +root.right.left.left = TreeNode(7) + +vertices = find_unbalanced_vertices(root) +print("Результат:", vertices) +``` + +```python + +``` diff --git a/labs/lab_09/Untitled.md b/labs/lab_09/Untitled.md new file mode 100644 index 0000000..f52f53c --- /dev/null +++ b/labs/lab_09/Untitled.md @@ -0,0 +1,225 @@ +--- +jupyter: + jupytext: + text_representation: + extension: .md + format_name: markdown + format_version: '1.3' + jupytext_version: 1.17.3 + kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Лабораторная работа 9 + +```python +import random +import math +from typing import Tuple, List + +class CryptoSystem: + def __init__(self): + self.caesar_key = None + self.bg_public_key = None + self.bg_private_key = None + + def generate_key_from_seed(self, seed_key: str) -> int: + """Генерация числового ключа на основе произвольного ключа пользователя""" + key_hash = 0 + for char in seed_key: + key_hash = (key_hash * 31 + ord(char)) % 1000000 + return max(1, key_hash % 95) # Для шифра Цезаря (0-94 для печатных символов) + + def caesar_encrypt(self, text: str, seed_key: str) -> str: + """Шифрование методом Цезаря""" + self.caesar_key = self.generate_key_from_seed(seed_key) + encrypted = [] + + for char in text: + if 32 <= ord(char) <= 126: # Печатные ASCII символы + new_char_code = 32 + (ord(char) - 32 + self.caesar_key) % 95 + encrypted.append(chr(new_char_code)) + else: + encrypted.append(char) + + return ''.join(encrypted) + + def caesar_decrypt(self, encrypted_text: str, seed_key: str) -> str: + """Дешифрование методом Цезаря""" + key = self.generate_key_from_seed(seed_key) + decrypted = [] + + for char in encrypted_text: + if 32 <= ord(char) <= 126: + new_char_code = 32 + (ord(char) - 32 - key) % 95 + decrypted.append(chr(new_char_code)) + else: + decrypted.append(char) + + return ''.join(decrypted) + + def generate_blum_goldwasser_keys(self, seed_key: str) -> Tuple[int, int]: + """Генерация ключей для криптосистемы Блюма-Гольдвассер""" + # Используем ключ пользователя для детерминистической генерации + random.seed(sum(ord(c) for c in seed_key)) + + # Генерация двух простых чисел вида 4k+3 + def generate_blum_prime(): + while True: + p = random.randint(100, 1000) + if self.is_prime(p) and p % 4 == 3: + return p + + p = generate_blum_prime() + q = generate_blum_prime() + + n = p * q + self.bg_public_key = n + self.bg_private_key = (p, q) + + return n, (p, q) + + def is_prime(self, n: int) -> bool: + """Проверка числа на простоту""" + if n < 2: + return False + for i in range(2, int(math.sqrt(n)) + 1): + if n % i == 0: + return False + return True + + def bg_encrypt(self, text: str, seed_key: str) -> Tuple[List[int], int]: + """Шифрование методом Блюма-Гольдвассера""" + n, _ = self.generate_blum_goldwasser_keys(seed_key) + + # Преобразование текста в биты + bits = [] + for char in text: + bits.extend([int(b) for b in format(ord(char), '08b')]) + + # Генерация псевдослучайной последовательности + x = random.randint(2, n-1) + cipher_bits = [] + + for bit in bits: + x = (x * x) % n + pseudo_random_bit = x % 2 + cipher_bits.append(bit ^ pseudo_random_bit) + + return cipher_bits, x # Возвращаем шифртекст и последнее состояние x + + def bg_decrypt(self, cipher_bits: List[int], final_x: int, seed_key: str) -> str: + """Дешифрование методом Блюма-Гольдвассера""" + _, (p, q) = self.generate_blum_goldwasser_keys(seed_key) + n = p * q + + # Восстановление псевдослучайной последовательности + x = final_x + original_bits = [] + + for cipher_bit in cipher_bits: + x = (x * x) % n + pseudo_random_bit = x % 2 + original_bits.append(cipher_bit ^ pseudo_random_bit) + + # Преобразование битов обратно в текст + text = "" + for i in range(0, len(original_bits), 8): + if i + 8 <= len(original_bits): + byte_bits = original_bits[i:i+8] + char_code = int(''.join(map(str, byte_bits)), 2) + text += chr(char_code) + + return text + + def demo(self): + """Демонстрация работы обоих методов""" + print("=== ДЕМОНСТРАЦИЯ ШИФРОВАНИЯ ===\n") + + # Исходный текст + original_text = "Hello, World! 123" + seed_key = "фф12К52" # Пример ключа из задания + + print(f"Исходный текст: {original_text}") + print(f"Ключ: {seed_key}\n") + + # Шифр Цезаря + print("=== ШИФР ЦЕЗАРЯ ===") + caesar_encrypted = self.caesar_encrypt(original_text, seed_key) + caesar_decrypted = self.caesar_decrypt(caesar_encrypted, seed_key) + + print(f"Зашифрованный: {caesar_encrypted}") + print(f"Расшифрованный: {caesar_decrypted}") + print(f"Идентичны: {original_text == caesar_decrypted}\n") + + # Криптосистема Блюма-Гольдвассера + print("=== КРИПТОСИСТЕМА БЛЮМА-ГОЛЬДВАССЕРА ===") + bg_cipher_bits, final_x = self.bg_encrypt(original_text, seed_key) + bg_decrypted = self.bg_decrypt(bg_cipher_bits, final_x, seed_key) + + print(f"Зашифрованный (биты): {bg_cipher_bits[:32]}...") # Показываем первые 32 бита + print(f"Расшифрованный: {bg_decrypted}") + print(f"Идентичны: {original_text == bg_decrypted}\n") + + # Сводка + print("=== РЕЗУЛЬТАТ ===") + print(f"Цезарь: {'Успешно' if original_text == caesar_decrypted else 'Не успешно'}") + print(f"Блюм-Гольдвассер: {'Успешно' if original_text == bg_decrypted else 'Не успешно'}") + +# Дополнительная утилита для проверки работы +def test_crypto_system(): + """Тестирование криптосистемы""" + crypto = CryptoSystem() + + test_cases = [ + "Hello, World!", + "Test 123", + "Простой текст", + "Short", + "A" * 10 # Повторяющиеся символы + ] + + seed_key = "фф12К52" + + print("=== ТЕСТИРОВАНИЕ ===\n") + + for i, text in enumerate(test_cases, 1): + print(f"Тест {i}: '{text}'") + + # Тест Цезаря + encrypted = crypto.caesar_encrypt(text, seed_key) + decrypted = crypto.caesar_decrypt(encrypted, seed_key) + caesar_ok = text == decrypted + + # Тест Блюма-Гольдвассера + bg_cipher, final_x = crypto.bg_encrypt(text, seed_key) + bg_decrypted = crypto.bg_decrypt(bg_cipher, final_x, seed_key) + bg_ok = text == bg_decrypted + + print(f" Цезарь: {'Успешно' if caesar_ok else 'Не успешно'}") + print(f" Блюм-Гольдвассер: {'Успешно' if bg_ok else 'Не успешно'}") + + if not caesar_ok or not bg_ok: + print(f" Ошибка! Исходный: '{text}'") + if not caesar_ok: + print(f" Цезарь расшифровал: '{decrypted}'") + if not bg_ok: + print(f" БГ расшифровал: '{bg_decrypted}'") + print() + +if __name__ == "__main__": + # Основная демонстрация + crypto = CryptoSystem() + crypto.demo() + + # Дополнительное тестирование + test_crypto_system() + + +``` + +```python + +```

%3FIH4*yGg$oY{2MVFQN6A19 z>E76aLf>Ij3!q{`cr7Q{FNJ^|jSxtcU=*5cPwYh<>i>@~+LE^#AOztDX7dh9yva|s z!&4ih_f|K%*Gm51#FC5Z=3DzI&$#~uk4}vF(%!&rkASKG<$P55?xL86sYeuWJb@$v zEi~k1TcAlmM<2Gz2S{#PMbK?;K;;HSFyg)?Y^FDF-dK&<3oB7CFHW5RlOmG;hX}A# z&|IEMI~-`JX`ONJ-reSr;!L5*hXmQ#Vuf76#rnN1@a3gmNq7QXbIzA_DURB-F&9q= zYzm^>_e_s>jVG%dm4XJ=A*47S_Z9|-HWQb*NMM)U#k^7^OhYtz`oa6bosG{XTsEe+ z=@v9aRR>3rUEp=#s>Jt6oF5TTxt8dkRq*&)7hCBZP@|#u*^QDn=-v4g z&r0MO4d~R735)1>Hq5%gIe9Rvqsk@x)fJdNGu^TpB3^j0ZkcRxDO|U-xsO36Nl4cy z=a0U8wr)OGREr1S?Xc4+eZD_@U9v51Ok=v_v(+7cKX6W8lp+9cGhcF6|e< zek$_Nb-Oy%m<`*EAFJ{z%sjD#t(Oqo%FD~20pLS)v1ndB(tbowdhSFY4=1n%)cp|h z0K9eAstSJY=Vyjmavpq5A5yHa{QrPs*(vbEpy50T-ruye$Irv;6nIHMNH+Xf%Y}Jr zaDYJS@|&%6u2Tc_8cZF8wjPa}maJyb#Mlbn5@lo|mq ztbCyx{@-eHdUXpOHewX!&0DvZEO3%j#WD8BXFk?Yg>{@HP_x_cz;3Xz=ke3QA!F{K z>-FzV>sBMtqKEMtIw}|R1W9My6=XMP_Rpd=fO_LN+Kta4eTLThCWyx9o+kTOJLNoV z8n#=kpDcTSCFQ7fp>bZjQ-@x*t|p~oO2AoSPdS;sZ|o&ca9AvN;0w3*l~*r5N5he$ zk}Jjh>IX$^j~EGY;TJmhdBjegWIxeSuh}&3$j(U|ylh|p!(0ldthaHh&KcKN;|#YXN>ir?O$ z=9l6n#&TD4B_mT_VF@SmQ6Tv$DjuS4rWf13a!%*cVc-6Ms(NyV)~^1RNHaBS(p%Ui z^f6CU#qEo5Xi99DS$92z4(MQ@6ay0;EX8Pgp!tAFBXyR9c8iF*e_J0Xlo^9rh`9ImBGqD?{FP^y} zxg+-7Q3dN+#XX9yxB+{+Rp~w5>ohzHZf)i&O{#%MYsng; zOH5H)X-Sm0UFS{ao{x3k9OFhEgUKBWq1s-%5=(;Ldxl3>iSTaodm?weGqg_(A(W9;H_02JG%&V~ajitqqR?coNX^L_)<=anijV?-W0*AC0>f{ffxwfUt z;W0dTVgCZ>2=T`^x9BFD4!)N1`k{yUKT~_g_{q=qU-dKSebG`g-l`qhl0qtT1r_E3 z-W&hsqSEnv6x`{jND==1z!pop!AzfpKh+|CvpF9=ii_LUmFcE@Zyc#XgV!Q++op=U z%{52;VJAc!>&zOc3AiURC-frX^&{2TFcu z$J}sTjF@92@ng3}WOdDh5e-{WnOhUWr!%}BQM;P4<1Q=vT-%rsl`?B+Ie~ro!xQme zj~U;c2vwQ>7Mbw`!?M5^-BlX*?i%7cE)&|6-0Z_=?jnQwWOj`DdK%9^xZY;}wS;$D z_SdEMZxA&Z@xXqp-eLUfyRx6J@4S%|)_veKarM7gakQ#_+oD&@n0H~_-2scC1#=N( zMRhfir!iUTs3zsQY|hEqG{r|IGQy{1boUr?1s3`Ji(=5M5yjjwVmqp{oHF`DG#aSk z0+F-bhqmPvjHOGF^-f2gNY`Xgh;=zVJ~)4aoq1DBq0jrS5=5`P^{EfZ`)xmKWag4E z>F~%%n`^Q7+9G25=ycSS^QI<>ipQxDNlx`|h*>`?<~GVDUx@|>H2=gMK#(IiP{tut zvTPfK3IiQHO?1DkMr`*+-~iTS@S(Mv4~B^Pm7(3&o?qU&I@D-OZq&Dn-e5Z{Flylc zL;28{tC4l`NPncKrVb-})FtdZ!4#&BJS4v5-_q5Ww9UdL)$OeGtHjt3fxAv$qHf-^ z0sR&58PJvHiW<)HMEHRIEk@#O^eZeZR{p=#hlK+s131&*OaSQ3?e0=>2f9W)7=#BM zcXEQ=F6S}7zfoXRj(Y|ud_Yuzh{bgzeQvKVgU)zu+?h&inL{_>?wnNDQ(E#ImF0@4 zx9kPo4XPz!-9>AZ@Dax$$aJ+{Q2T$m2}*L3E59&Lhe*RgH6%kh2yceaVG;df+ysJg zf-{-utr9~cgv>1B)5-J!x<-?MxW^zi!Sf}J0tro$);M*V3q8B^K15-+2P9#x)x+ z>fBz{Ra!z7$K$qd#VL&k_n#=?$>ejG1pKzJkr{bp5&}@I5GP>$ySbH(; z=v`MA8ycbs^=JXZ5p)qF!C-Pj&?=W~W6uP39{^Pk5x0k~C_tv5p#fhQkTZ6RGX?yq zL}_{?UF4`q_FqUjnQ;Trlf0zjR|cKE67`i;mrq1k=`gpY(pzw>-M3g#RD*;70&oD= zB6@2tIGYV&onR=z5BZ%kV|YqUukFu+jX9#@i0b{qWl_y&dsq9kW7NlTWPW$&)jm)#gnS+$ z`(4ZJyLG4|u3Xht);y^*bDgRCM{7b8)7)UBL6&5mVCSr}jy7ZAq3*#b5s&;y<}3V6 z--~ZsjEfDAways_=NXN8=j0otvq`*qG{<~wA%%gN`4}Y3fuW&*iav85Ge&^vF9I^E-XBE|2n`6Z$@!K{z=k>c2@ z+{V$|#>ozaQLZ!eN&)Vv3};w&bUl@RcVcH)Q>iU){NWA-PWsW>$CeDd88A)V1O6GZ z4ay7#(lEt8fGxf88U(bHFj!2&0Cofb(P1=yVBIYomVb$C5Oh|kNbLHqewBP3h4c)G=TW5m z$5(DkVvgZ~W=CA5;TBgGqh`!|XM!}dxL@F$4N*j*Ju7cH5U?h6@4bCjmxbt0S%uh` zM4V%9*=O0~{xF&h>DC4y+e~h-9y1;Y^Hi!e9y40pP(c%FG*(O!oxW+mw)lsoKmwR>OMzdxG64~`Xqh}G8~Lp|3$}s*QhD3@RxYXl52QYF3pr( z2gjXTer;bl?JRQjAp}VU1Wd2TJt01x*!3{4^zKNiEC`r#M2&i7czZMBy@4MBsh2lW z9jaU@k=XfjA;sv#jWpS)yVdTl`X?O(*nK<2^2|iG&(Hb-y>@%PK#!imB9ub8Q{@K7 zSpUU?5o@%bZdUlyyUP2g^wE_EYE$aI9?pg`9=9lz!;XQ|Fe-&J`To9upzlP=y&Pt_9({lW$_)~~yYiW0;V&XQY`D@HmG0-i?d7qVkTW#Bs!wK1le;6laCT;Ju!DIz1? z3r3QVkIy)5!&8adUhX|>0Jdq)$``Y@dewXYO2dM zba>6$4sD)B+GZbUeG= zW-b~b@9w1cVz(iRVsbF?HtHs=~T9K?X_u02zWCM7%d&S*YLcoW%r~A~KesS5ggJYJzQYjRy zHIv=;PN|xVT5$5vE9Dn!CsYPxJg;l@h@=zb|4?)e!>;M1*>E?`W1Up)VRD%nd>UQP zR$hHNf@0pF?;X~OTtF7X>B7nn%I;@!g_FbLV;@)t7QJxzwn612r_WV`0xd(8ys3(y zn@_$mok-zUn{;_Z>rqcn?(l&m>^YJ)r{Jlc!oz67ft>#OfeVpPg! z$@p#;e{;*W(X%yK_8}MauIt-XkslY7#qfBxVrn*#<+EUfKfdTqqg7=d~Xn`w>eM@!vH(8!%nN zwzN&{3&(5bPxlf(bK(fzl78(T!%k1js%KN$^k!{GPNiS4926eb~1;UM!U!7%@r=_-~M#=;GN@Cuk)cr+;Y}& zNT9{_cDLHxgrT{Y@ne&apCzJEKCLIXL#0GMmY@V`BEq= z1srX7T^NU3`0H%#M6kzKt{|DclkaQ(-uN%6Q*+l{6qc_DpNQVvom81oP4|5ddjzeL z3#}2a(EV0dn@*uuyGpAcevLTHSjTR$`vtRWo-b`!v=*&*%libeyqvi@#!57u=EqI{ zd&;T&1J?2t>qt^vB_%hoBaDVdMg}!Y_Sc7WZayZ!jFF-5e7jbmvrMzh3y? zOZ-unA?_#8UiN&$qmau?$MJFMcA|IyVX4DGCV43XwK3~1?qF#c2}3{WT%<+Wzvmoo z)ju=bCKVt4PEuGq?Of_E`rqd@=^56uv&Q}AKfTZp)NOu_PqF08EgDKr@;FbNYj(JA zBlEUO?cA{b<9#-AnrlpgYjWdodnNDlE87($Ddd<*(K`E{FgU6y;r)yutKl7a|KuFv zv!px};!1MNK1828Tual}*e%Sx2hWq1=2-5<#r$sOu0_XyST=rD{~dH_4XOX#jta8! z!>!WCezI_KwcYvlh{j@)vc@h)Km*UZ{7}Yl&{WN7s=7Aib1!abKIP!$uC2!gYR0p> z{{C~*KNm}u{!p_#KKkLQ6WxpX_`QEuV;aBmBIEg|A8y*}GIvM>iOwe#ZVrBO{O{+b z^H+TIF*jbe<(D`<*rpM~o5+3g@2_>1n4Y{_ zNpk~ZedQJ6B|lFFYMpJd;EGtaKFEi5OVhHwu8Z@iP{WKpv3(k#91Q#tfo#wEk+?VOdDZSQnUv&#v&^NTg6Gy*K zDb9&Gw_WrT=dI0QoUHkK;rrsVj^&@rm<#!Jp`fR*L5DYzJ0bcytz?8)5pBEbfdVF}9SoiOKGhmMtyI4;*V53;JbCcS*mAS&A09W&U>_F{z?(>t&n|%4S z+~m3F?0gWzmKv`8f#rf^e|6a{ZuER)dav>PMSfp9%5jS-RUb-~<78Pd&^)^+lfEMN zCZwKwd+SSqr~FLe@i^GK&qix;-v8!uepEx~{#7H24S4jyIRMP{|wkJ$Ub{@=X}G_{i!9 zLiZ;oPZ&IFb@Xz3BvWzdg_^g}=rOWjJTtC&o)>QN9@Pl)H#c)=8+yDy(9nQ}-RJ62 z)$8@CB32W|w?`GKK3Mi&Ff{(Vki-kL5=$c+f=@}>r2x+lJK?ZB92?ek!dk3#YK6_eHf^Hc%~tumUYe^Jcq z-TCl{X5RjHt({l|uiaNBrFN#%{tb%w&2QhyYYW`D>2*srLN+1$-=j(8ukbbJPg&en zdp|vJ<3;`3JCyBfN6G$wR@}(;rxJ~@MvD)&H|4@0h6WZM_K0e6>8TCu%VPfb&p7j3 z_sVfTS*mSJVwccWZ2yjCCEjCsmp2-{jLr3@XYSw%A{+YcIPzpP9WtbxrIYf!TCN{& z+TJV_?;*X24aHfxVOc3)1xI3qY$J*4vD;ga-9G&9K_tQu9**A@@@rSniGko*#z*>` zvHx?bn62k6nru3~SjPn!%)!H>2ZkFfjH2!yqqc1nH=3ARp7MCXd7Hb|@6$@0=x;ss zzsIsajtA)ujTAkRp9-FFnosv&n}0Cf``=II6N#}tC1EE1<{KVN&FDz0dVqQa`M_od z(`E-t8|fNZd*@H2@o~{`hc|Y;M`YK_7zx@?BjMKgt)W7DXHd4Oc*X`0F;Ml0+H(s zqN?&YtwJLOsnS{qKbtCU()PSDOO1sb3V5Z^8wT4_*> zPmgvapzb3E5jWh`9<^SJtx_fM^nf!P4CP|ihXz<3kbhucjvCzl1dy<)kx9usG>f51 z_}(X*+0Bb}N5IsIXm9brdR&P!pi(Z#%DK`e0fBHOMhlSQ5B$NV$Y2S~m>`kRMt!Yt zoOQ8_+tTV?&dRi$dCxyg|QF+Rwd=5AMKP6Dq|50u7s;9~sLJzB8f zFgc7Hg{)J*6j$9Z8$c<0-+iA06e*1iY?nZ1_@IsKsX{ z=jEB=`b(Z92e2TpxOo{xc4uyqx(PRhX0fkH#) z?5?N$Qm!>e<}S)sr*xDLKCO+~^QI?)Jwhu805MFCNENUR{VGmiQKwKH38}0zQRB_H zBW2409`~YASpS%B82Nc?y&a5-?S>{Cn3Lm}Sh;{{G=ZnFG~H2(PzP|_}7eV57~%5`u2 z?F%!8x}EB!Zu2$2Y~GzJw9jBbNr+28K%mycW)8(Gtgo>j?vJB;K!LgoJDaoo?NTOd zHijgSXMid~DT)jPI`{k}NL8?y54KL1MBW{0;N+Rq$T}FI6>jCY@8T~yOKX{$gcG;# zDpy?fsE=byB)463u#`#}#`12w6qrLrCU&3%2kFQj4vwDdo2mc1v$2;?_I+Ud(`a-b ziD4i0c=yyRO&_XxSC3;p6v|otHX~jX%2<}l&5op%52qQSkibxzbzD>RIn)GX0tBEq zc$G0OW*@-w80mv9MzgW|EzD2&06+#j_T@lPxWYDI^ILKiEN?@=*^yBqY4!2s6`3_U2u&19!go&cko3|EI(zOXx2Mm(wG zf$+q@PgDms_e~9^ub<3uaq!L>ks%+!qY2e~&&=4<4(szMz@yzVmbGA;K}M21!1nR) zPIsjfIt4!67TD;LKclihwAI7QZJ4m0eN-%i;k19Hq&LgC$pW*Yw)|*&u83Hl!#&+_ zV55Yg`N~QU4+zD(^Dr}kYW5Llde7<)F+I~2+MNp)>yF&K{=D&Ml<>El*n~j;Mk@)7 z7F7XAh|JLSK=q-=|UzZkJDfPPsC z?^WPeB@G1%mTkHh6U_H!rT9PTS!m824!Su}GyTT`)tdQ9y|xQ>zuldV_3=F}$s4Wy zb(15jvw|3@$RIiR@%mtd%{uNwI~QkkDn$QPn8~Z;p5B4}i^k7aZQGKq!pZs+!m4r1 zvk`?B0fVyQHNR<7Pnhyhx;GjQRIt4YSNxWeVw`#8%(E1RtZj2YaYzv=5@`l_%-c1W zZHIZ1%q%54E3Cam7~ud{uomFhV3w2D8&W9&gI6JFJd#;n19 zW0&TAY4vX1=XXk0?ZN$_jgSrhcqNT`a&Fn;bI(V+KX)&HXG3Op~Zfu_=4(VmwYe_fTJQjMjQ(`_Q;Sz#1Ec#X99hy z-zV-5jC3`#+^9)uKknMbV@LJdrO#UGojfe*2x_Wux`Vc9i4fqWO;=}b%O>1=%be{v z3cG)VRx~>mh%;}*&k)#FyS8IVi~7X*W(TK~*M||_YKK<8trC16Ro^JE^xEZny8=(9 zL7tFJ(ZpXuB=*SxKxNj3_n%j4KaVn&YL1v^>CJl7Q)cHc{D^taUt3@9y$#?T%rhYM zeBy8c=;8rP#oK)~eQD>yjG9`!-yUp?ljYqWpA_+wqb90@DV<`uNAU;z$G{P$qHI3> zvxPLFw{G3KXDOd{O91|k7e}CRQ{E{)0ojz?Kn?^X>jTRVb+p?}1};ESA3@?G3X_@ z&rI|^tH14xt*oj&L2Jab4)O6ZC&irU!JbqsRqDH7H8BY4N293;G8iv6C;RBujNR-l z?`svWSd7J~sSjz#ReM~oc0JZ^gW=9(P8t+(S_tDF9YtP?ia`&t7ZL|2*|Y#V9U#C{0P_kvM#+<9!jn~h{t-F0w!Da;*U4! zdG1cWKIPoRDXO?OS@33Q1*dazg{Or?!urjd2Z&Aq1%9%tkx4;lL+QD3m3yMLCBdTB zmn1Fwh>i}uheH!{5zB^hJ8+us2b7DTSYWpG!Qt`=_?Fqxj#}U;j1p+rMOB&@2Zb`G zz6y(QavIFPI>pGbq3?|VN*SJ(`VpiYw5m+k@kb3L{HuGcD-M_3hCn?UBPs}DJ$?0+VtZs~E zKXW@FaNQeoQ8EOCz!FJI5Gu65kP!1v_h7)Gv1R+VKj{_<0JFlf5A~&(4kZgJhi7Xd zhdWxCo<-y7;c)@l1U5kF5U#!)>E5XNsIBwqS4S3LrRyyrT&b=(ZZ2J*wY|1}bJB@{ zkJP(tRp1=(v2P4zNdb`k0 zJPV~r$S&zfH0~onrt10}%by|2>fCGH=KkWzw0?1fQPaHHm^6x*^ZBHvp`-o9PU zKj;0Q1Rdi+?-`R7jppR+Xkc9kg@-W4pb#{~{U41yq-!M;f2^xT793}8w*A6krC};c z923W0d!C#In5qdb>Uc>T4UmF{0Q!YowW_hPF_+g+{yMrkK|ueBSk^H^nd@FQfrhIn z2ICNsCE9h?G?6~zmNZh%yh*5CqV9wgKjUQ90o3wYnKKv=rjWcB*5?l;p6-BE)=74G zK$H0PLeacyoInWY{j7q+BK_JX|E<`bm}b=aEnI?W8u~4> zHu<_#Z~Rf3xSw^+@g~fkC!k!Spa$IHoJ4|+yVi@gUu5Pq&Mq>|jWib#6-H}b9Ycl) zrbi^dt`M2UL&&7)kXrMFWB0#E#v}nWZ0%arrh{M)5g_7obJF?5IBUcc7_**_90r-T z+sq|wB=7=;jhqcjW!P01{_b(pEBfzd10zg)bdeo%eua$j_n%wTZbP>GxLyJHGhkh1p2MFzqxAgD&u!Uo0-R==t6^vnJuR; zW!3k%o@H@9^YU||?N>Fy76tA>FO5xCH6k%l{lI}Y$IYZ|9DdDEQBie%IWG-%4F>Zd z9Gi6CQOKKt5p$$;185h9P%oWSFoT50VYEFCQg_Qto3D;ZNSg_2IE*#N;&z8MP;3&t zML&K)^@N-ehfUi|_|Z=e6+hMvl8B>Gxu0}ZCd6bf)9>B8m&^+RB+n>iz|p~oP~1qy z88`L|V8(|grOQU1HZfXc>KAOA9W!T^jq^QE-W!ntSOF>nU$S#y`hhxElc2Cr{;1C+ zXu9ChlEEa{_Q;Uzt213W`cH|TeT%~HYbX+Zf@eNtLkPwR0!o6_L5%+Z{LH>uc{-AT zR0la9Xc%H&I-6LK{z3@SuEyYeA)|{4D*zIp3m864rWt`f<@>m{F@M2T9xZ$_Z5pgWbfMFt z-+`qoAObJD3`k6no`35vwG%_BgG4f3iZ;&pMYyw2fFaEc%^E==&L46ncPqusrn#5v zzIjAuugIvQO!D!$8~dVQWx}W&o1#}DY9j*A`D3(#$nQqpCSZFV6q*1O8sL_2c1+fQ zwgKTJu(;ooNlC5+Lx}%@ZK$GZ9CVqa=a65MmcM<={-iJK8pJNVwNB>Qs#^L$mHwwq zP5yQMgAsE`M->Q;9J}Hm@PxL}j5`!{O=QL}pl?28_ z5_pTWU0;6px2M>{$$)qKOY4QaB2AdP3$nJ-)AzVlj|}~-a3b?~QbnbVeve+l2~n^9 zgJ{7k%@rs=zY~%tVCeZz(lW+NJ1(xuOC%u3?7@q1l>h1YzxtKDpNclz(By-}D}u%2 zzF>$v0!KU`;k$)|LJ_rLm&U}jl*>(jRR29{u@>>9(z%quo67DNPQHIlcRjnm^4%AD z23O(rL8DRR1ahEhhEV`1Qu5ALqbQWNP zU~rEYxmq+kChw+;Lb8?s!pZh7I0ceCAgAUQAp)$|jrp1h=vp5s}9^8DHl zPu@3qtObgUDpWmV7l-4tf{-EDVPdF*QR8pfbs!r7kkB^%K?%k+pJFmh#ciUF=W-0f4Lper?FrfX8Y(vPutB z*HtK4wz@<;nRd%AKHc2t%YBmOT%%DcYB~%xTdSK{`04rv?c2hsW1ELBX3v$5m(R_W z<|j0}DK1MiFSKEO6UH%8k$`}J{42*O5SRg+#(}RU0|2Lg;jW-=hVZ>6hMx&FtHQ^@ zd)eh~9n$sqGk2CNTlPpJRmJd0!8J`R=v1*%+__I~uW{Z{O`1iL2 zsg00b6tOCFX#_H?$}41;{{~GA*TE!b6z9YtFUvgIX~fW@5q;xM6qDK1h!*Kl=3*?9!vXP)hbA~_AREK;`s>0MP(=r9*Lp*2}KMe^slPsBD>T|58&`+mk{(bA}>M-VhSk>o|R^6p3MnZTph@q%QsD#pvvFbRd!n5TKK zEF&d{1iA`=U>TAZ5^q}O%qw;YGQCT}-Zo$sIGs#)$al?KqSIJi(!j#t<3gsk!L7rM zk52>SjxeL;=GyHE?gpo3Meb|bHOHPyGv`{dDcZ=rU3a|pqqxkjoSI+$SKg^@zjXw> z=_<%&u`jGcn}L{t`q5V50POyFlVJ*nPyYLX4|*?qHy&d8m5Q6ULLuuN^m7A!n1T^zcpC>4*zfzz|3}A-EL||L6 z&*68Ekzzcp+PYoJn~8Bl|MxP>eiQ@d{CZrJcv5hB5IDk|y7>A(QaJh#~3?UYri65a#C3Qq-tuz2x#5B~qcn(=7 z=s48Wa;1O&oLgFa(a%t3aQIV!-RkqHr<(ngUhXdVj0&jEO)bQoib?n=TZCEUf2s5o<^b+8L|AL ze6yL7x!+%zj@VUlaI?HST3_2cXcifMOwJCk0_w@6{d20o;UcuEh!9c2j6lPH)S6NJ zh}g>uDTIiXt$_DW`Ks@O?@wlH8xL3c8XzKE1h5J(=}nj+qqQ(@KO5#w zK0afua7pv}ZtviB&u!KRc`LwDp6~W&!!!uOUoV<%y^P)A?nuF9d-fNcl=t*mJf_=> zPyY%Y#Ok?dsL;jY{D`6FEOut{CZNShYTuA&H=s;ugt~6lwyfm5UkpTRG@{yF)bfne zYg%AWtb8Cy{h&OMepl6Scky$&cRS5V1Z##8laO*6<{reVn8f`eE>rhKAw%B{ zd0Xz!jbb+T`PO>kdiIaxUxhgdD1s^IkF5@WSD{R_^91x%^9`%|yn?37m|3 z$_E)=o3ZA7Iea?!cD2#s(Lel23<}l7qEt1}pc!T$VS& zxsBqRzM#Dx=N6N&86!GIt6K+7MH$%q*oXZZNBTh2XtZxRdHcg zqx2WCA7dl{0>Z~j2XZ52jCN5K$D5e`tdszv^@d?Q%_-HE3skBfmCIb|3qR9>FCzIG zE6o6_55Y0@;0|d=HKYi-cU(Wc{5tslF?Pr0>AuF!L&$Dn`7rL4ipc{Rr=s1jKsmaA zR*e|D1KtlcJ|R^7%l*Efb-No%t9sB&z{}}#tdwA)-iX`q4dm6B*s-`TO;e)qGeqr{ z|4Ye8TcM&Fj5O2gr$b}Lr=Q>Bczp64HbuwLxCRm}f+1TzB1vGe&wmUDjY8|LR$-Q* zz(`7`Ec@*%TABX5$9J+c;d7w~YDT0Hx>q^WekA7<1+)WsY(34p3X0-;;>u}TUns1- z@7OC>4vNa4E-xdxi{S9)&#FDeE(){K#phUQeR>s zZQcNTb+;u);s`g`m;iFOGqS*vZwj*IGyCN(EGG5e({lQr<4Zh22@WLG98U`sAaN7FAjq6oQ@aoy4`Z~*voC~yX9Yb)M-(CW?|$PjR>;OEa2 zVf^@b-3IFowQ@dFjIkN|!f}Y*Az%PA^Vqjj{=EBf`Yk8*FFjphJlw{k5E!t*$c(=% zpdqn&^6qy)J zRg+o(o1_Acc7UhL$=jpI);0W-vD2k+WShhY{XqIRxp<#!-91#j6}Z6;!9o}}IVrMj z$G(Q@xi3ee?7{Kkm~LBIv#^UYrtCM@q=beq!;Mo{Lra?~y)ZIBaYyD-Kw(nxz(~1; z4PYSj!BpE(3J>jI`gA!fAs$scc%ep^Rt$8NX{c5H%uhCvdyXJ>0tOU-Pq6pB+X`-q z?rdWwRrAl!$rO8Up1K-U`MGk-%VjQC@T12%OQUxmyP*oTJn0Sq)Z<+4wQCvMt@lLq zt>=T*vaaM44QW*a69rQz+D0xR^ePG*h8u0U%7{+^p`!NU{R7@bEs=ens)hd42S~T+ zgA^D+T}OsOMVZ%k<0>UrF5v^ftWf~jG347HE6ose8dr0>=x~ov1>cQqUwF{DVtvWq zx$k$<7(9i^Nr@>5N;5n!z{lfcg{7>?mNop8?^^%eC5$#MGEI5F^8vON%LrC2(R~Q* zhNl(&`HUxf?;MCq;Sn_e%H>*jN!eyA+-)8M`_hpE)jRgA0yqA4__;1&Hin~n>Js?D z(LA&Q`g7a6EYzcZf2Ptude)u4EE>BI$T~y^!2mhXsS<}xI6d3q(Q2tug{hlS>*WUz zJe#Jzt{(MHVKB0ES7q7;O3DJG_d5XDkhpHJKf=;YE3;9ePGS}jQ|NWsL-L;4-m{=v zZC>&@6BroS4;bMx@>>83K~VGa+o?@?5e9Zso!`>xyR5?`w<@+gy3F`mJzU;Vq=+@W z2(f5b?5)7AaY+V4!}jbQiw!=|I}IxS%=X1UsKYv3@6Yd!&ahf^S%^*V$(y>2Dg!vh zPB8a@okEW#;l4b_0EjQt;7cWsNOWBK(Q6(yzh^;jB}14fs9o#^PO+4_@@1SWemyu@S8`+=Y>vaVK{a*1chf zHUWdF9^9rH;8N-5LZ^1OMa9h}zD!srvdr`?hk4O!nd~t&K%9t7m9%O zqfii_DFGy$<0jL}7qfkR#m@g_$2n3MH!2$&4e5va6c1!}UK3JB+&rY=WPlH^3}X8Z z@!rQ5w{&n!k*uG~NmvhRR4sdVPd0Q^msD*gbmw=91Ca)ql{^^Z!}CD~LpCV6GEn%O z&%2U9a3W$7hniE{?Le7l2G9LOl|itIxgPM`$rC+q-^dY`d)e^>W*#J43P$4i;Xy3D zG}L9Ea&_ZyEzW+@P$7@}T#0Uffz)roTm4pqSeUJ_0mW0T_4lJ(eIpxccB+V10D>jy zQ3Qbi6(k2K9?)(YKD$WToHHLI`@Rp@{%P#00O&wylC|q9tczqEx5CmJR~k-k!SaSj!OF-$!H^o zIKW{NVx+(9pL8Z^^Uf?5x0I(Jq^%UZ2D#o6zTEq`?%*`Eo9^%itOKOsCLv zXK6m!ZTumE4Ti=A?PHjK1*h^roYM`cF>O<#@0Io=nY>6NW>|8wXBQJ*l`4* z{YR%;rV#MC!r|uqBMzh7UAG_8DW_FU7u4Pp2|f1yLe@6g7J- zl;+r98Y{rS*Kw1b-OG0LtYxCN_NZ;Jp1MBDHDfdz$(~6_lXM{_ZHzC?SZ!X!|40M- zfPOE3+y{SNLZ@b7Pw!DuCw%791_43;vB5)d?|E-CS8CmLla{mDRFnEx;Nak^%({^M z&F}tE$Z3Iv-dmi7;^=Pw6NpGI3ZFOc3E(Bw7V4|J(2C9e?^q!N9h7MQ-4;C61GZwX zOw5LC)psWq1!c%MK1JVgMVY&r@C@P5NLY%f?%_Rr7jrH;zpCDEmp2uWae2H_-?*N= zYNjKLuQ1P<#*=}+1}d}L&0gHIawN%#u=_szdLb2`TRfoTQt_XDPUo2NWuc_PpwzSH z-Lxfny$@2z;b6o?OHX`h3B(N#Yr-qRbya*!SqlRVnPAqUt3s7OaxV}@`GlrFlwfQg zfYx!aGQf_UL>ZCdamaMmy?&s{GgA*iFF366@e~kq)*0&+C*jgs@Y;i^es{M zOerxX@-q15jhP=fwXtYbSp4@_L(*nFzwtSM2%w<=p218OoeGh^Sh2OAF4wa+Xrt3} z$T>9~Vg`+d5w~0bT`zFOOq_EhL=4r@5y+HnbscUU^6pT(Bdft19F(?NrYn@Ytp-~n zth0%?uHjS^yzx(CuLCGf$E*TB*-&_Qo4Lx`EKSNP`pJPJT~j7#kAmv_-fz9kb{TVx z^C)Q`tF6P1AO8AmKc;~h|MicSVkPQhQVu@9yKn9DEB7H~-Vv=kc$j6e2xLLN0Xl~n zd_o|olg&_um)MOSP;Bx(V|h)qye8hH*|YO`*5x~0TNSqbylGF$fZ6HkUJQ7R!6$M- z*Z}Dzk@y0Xt#Um5(q2*@%=sNY(i3y^6IZOFi7%Da7IP_uZd^J@;V{O8t3E+28Y)7> z=lvu_Q|fR)_}wh*Qy!1kCZ}HnaEND;LbEJUJpfdtXK0~T{)`?bJp|O;C`InobL}v1 z8fn(vzNhI-dG(A7I{n+J6l)1bHwQkhvnUGl%{xUwU3!CQpnp)19X@r3`pL)2{lJzl zK0AEBspItY`F2%mkgKf}(cyx%>PaT#C_hP;3$~g9H`xbU{c^wB4DL9*`aCi$rG4?W z;;tE!d6Yctb)rC%Ng^f!9DDG@;hQjKUrIh$!$@;X;Ua}B{Y1)NLpf4{x|!^3i44pE zl@Cn2S|p}GGRq+$u{W+^kbM1zbeEN$k+wj1?^&Z$b@GSkKit)((%NFBW4=1>h`BpC zv%zB>0!l`J4-8O9PsDe^R<8bT;ID*NUM>|YF5gqvIpr@ZD6@weqlpB;hlGT{1m6gE z9t_s~-?2C=p-PO(?X*iQ7~p`~t#|S92FGXi+m~EXQff!PHzMJG=)62IdhMBSxQ0*aP0jwh)aL3@-#BM_$hI!tU$p9riqp&8o%E5E-Ap=yEe7YT- zV<01dpPKaXR+`a)&}~|W|BW#KWG-O8e0_0iPizLhMPI1K2kr1{jbFm=t<0_=!o#6{ z&Z&Y24=oF8TTrm#8W2Y+XuPCrEaz^UXaGm-LUjEo>-r{go`i zbOJa>^6d~GM51W%76GK;-M`(R&O?-PKaW`L|L9|V1cD7zRR4g2vW0%&n zGqeZ^twQ6@`HR8)UB<9W`QWCcRi}UInYK$l1Gxp;Kt4|gB=~E*Bl=*XqbCvcgBU|j zfLmNW3b6?lgQtHsS-^kt z?+u@)^2=0gJtOta7`blWy_>L8(`99HT2SOo!g; zTK?UxikHlY^u)uje(eBkE<(Tn_-$K~XQtn3`(>{}GBix$7lb459&0B|qo8iMZ2TWH zg#5dBpM6No)W@J5|EU5AF<2>9*RZnNFJ@|9f1|jDFO8Ng`|t-J%cHx4$aEh4WH>>l z0saxQ2GHD^?GnIv#nCNu`}Q9`3mVkZ7(fH3o(tJFe~MdP{>2P9AY>OBemlMM!Vy2f z7=8Qz^lXd%(xe$0c)b4}}6Z9wiauq7DO#=KIuT zbSWL<$aNJ`mTj9;l8R90N{87%k!1e2o3C0&Uxk^Q_LL=+IvX7^rAWS_t&q) zq$Ylez8be0cWpS7w^&~GWwh!yWkWK{p!+xrnZ_fH1vPLLiHSv7a|(}vbs;LAbReL{ zW0~-4$Tj`{CGSH7Te;U1Pm1N+1wMJGS^G={UP?CXzaCoyG!>o}M@yQpLzhZE@pXs7DIZ}Li-OLI;7~rf~FaZ8sD)^_R5(yJ6QG0p@asP zf6c>=W2gB$-=!v)GJVNmR*BqF^@CG!Co(h@u3ftpb>htb&E$7YUcOsOU~%Mlp+qq} zYV0-!=GgzC@=Lh#<0GJ%?FA3V1i*9zkJf#Rs)JE=mkRr2mzx6ATm(>#hQ$OFPV&t` zjPD&C4g7q=7(11;Kj>aGQ0{^M5;46*h@ocfM*)tLNZ|*fb~iHIz^KQh^&!$U8H3E- zrIw^x?Gk_qSc6Z>*{Fje3(yUWKy+zC&HN?})xSEAtXs`yJXKh^>el68s+mok#$TAV z6H|nAI%o`jV3r8(IS7`@9_uzt5bn7FmH|Faf9|`P`AQVaD2_mecOVg}7}6umWeJ@) zGEwUahg~_PKPDJ|PL^kCfELyln${HE&oX6;MrW7m59Dd5?voC6aHf;qeiGT0gfB|Q zmEfQglmSeW9rX0SPf}9spzGAuqzT|p|Hd@;SJJI}=R5zXU5~U5XTV_4h)i?PIMbow4+1)1()CZz~_ z1#~K0ppClIezOR(DnKxSGN=GUU;Hj^9)L8V6bc38I8yUH)6AQ9$Q} zd5)(uEx6(Gxq?>r6?2*-6=T~`s)#yP@64eUnCl^aJrd(nvdXxtaWH_cbuDVK3*Lu` zc&Xp#PAnjNJ{3+B|M=z(^KlaE5dE^W(2p}(=q^TNf?%owdqZ@5@fDj`>C76>{HAd){0V(zAj&4i1D*%*q?Nn zvO^p@`lO+;FZ(l+?XuA8N6jMs06ELC=+IvZ*I}^Bt(v?BO$R6^&rF+Gh+!l+NQl?o zw(TTn@*<#EVIukir|NOuGrwnN_aknrr{^j!yr9Ex; z&&>s|G+xy1L!maDF5lq&d?2_9rmZA%i0{&K;<|yMRy^v~ng4Z+gt?EP0rS{rx0k7z zK=R=XVV>4JE=r#s}j(1(fD3F{jT34K^ zLHh>9gi+9h8u~6Hgpor3L(=dts`0D13i7A^(U_k|Q^&Wq{2O?nS2DtS;^JagneLc~ zO^k)ug^b%Dzqe#=v0}wt|HJYGNpnT}>Fw>^T;^oMO!H3m$pT+KzjABL^WTht!J6f%Be1Y$>86Q*ipBzuTbPI`K7HuVYuAW-gebR&2RyCsD4* zC>?Tc`OCshXJ!!6^dNuJGFPuo;s9$XB8Aa{2Yx`Ml&fMy2hW$`2icGWc!CY4}wzQqksXbN!3VR~n1Xt)UGn}}5(1u0F*7$|OIUlc!w z4ilK8lzm}N1-Fl+%NCsNIs8@v$SY~a(dr_wgy0yU{m_#HISPu}L5e<))<|{%<)QJ# zXB-(9W2R(`6?`_FP2zvMzVFMc643LIaY~AR9J2&OKp5$DtWIpw68)QRZ$b%&L`~8l zVCIFFRQ}zv$O%S6WF$=fOLz*PeZPFO?Ks2%3pYON)0;`ju4dLX^NKRFwr@Y<@0>a+ ziqJ0tav~)z6i_KyjEE?89E>qVCQiht#?wnrNZ?S}LSG=h$kuc^z^Zj8uB6CpAhVrB z*WcPD_TwMG{j?Z)H)(wRTjz^;+qR~b8DRzPb9zesPejD-mYW%?M<0sVx}|=HNBQyc zyrQuG$jU3{N^+5qN0P3I^%o++K)Py00$rlhAQK5lQFZ9st{t39cW{RW({kI{u?IK~ zHbAld)@RA0N}byC~niqRv}UXLa4fc zK^*>PBaZ(16Dt7F1wpjI%$zuDp*~+xIoOm_tFwAVL1grzOR?i&!Q)9i{qzIZ)dZLe zK86@mX*rKN|Fy{fHtKdUPpi$2q?)6IAx~=o4}Tb@XiXCH%$N*IbK5~?i$zYT^Z#W! z`XgVGpPweTQMKfSTyE|tiN3^3HChr=;D)gnY19!@uiJ(+ql-_zxV!$VgX?UaRopLk zWPIzmVsWV?a^WEzr2bnd8+8qg0`ut_#sf-InnF;IEIFH`0-@_^#H=g@?C~*a( z|M^cUx_`ww1Hn4PM4f!lMsP)x@$#H7Hi&^t^VYk5neT@cq^(Q5R%{%sd+KqO98x@A z!3;3TpRzug<;$)riEGdh5?UwGYGE`-41Z8;knqvA+=QDpa1%Iipryc61sArbdH`f5 z&GF+eL0M-DhVXu@6TPQ6Tl)t86^!fXAr-L zxRWTm;JZd_1xeyN;%s%3PGfG3-9|LVxDTe_Fs2Tk4CuuPA8Rn4u>Gk@MaT7Kb!8q* zpDmY{snM==lY|>sm1E|y2x5=moO8#xJqA{rXla{%b-xSOjZ=%`(-F>ddIedL{4+tL zb^+T!sr9T)Djs78PFnpQ(}s=LtCh;%-!5{2qI1Q)v2SD)^cpTO*DB3~OId!4#%5T7 z=Z6z(A+Nu66oG!^4M4(nyUnoZ*v&6bt@=+V-X7s5MEAj_q~MCH$zb8-TzU1aaM3jq zJZ99@F<5-ca!)Owc|?klJ*NMUpBU3P#4B&Ha%w@&gVNJoQM zmH%)_(K0$>qo%~p(M-+Jl5^J9)-^t9Meb3^BS+Wq?+^5Nv{aO0Gtkk1M4BB@X7H8`F(Ejc~-HiX6M|*U6e%k0i z{dQNG)2qI@L+QksX0)})@aS%0|Ds>qAHD)@`44=# z@^N2^`9KOehrtHSB(i|v%N*5by$f|k#Jo51L}e-kst&RCG-vrok1^yO7DRC$`TX@H16)J z_m0cA&D~>?!`d}OBloX&U;p!_V8F!SxmO3pV9U6HimrG-E-~}0LLspz zc>eyT8kbI6&2+k(Uvg5w&cEXBk#hapRv6qRG?*CTJVY5Oq3B|fm$c}3e5LMQD$M^e zMS$`biV95QgCMKMM2_@_MP*N0g@S^Lo8wq;H7|(w?b0#q@MO-rmr5oKUEkeoKeRK3hY^wB5T8r+(1XUW^Ti z^kgTFhLB<2Zu7WvP+j2}5a!34Pj1((yzPLFJmUZ9&UM}SNeKlE;WSv~2>DAzpRk5R z{$lu7EL{GNq-(J?;NQUhG^BHDTs}(1f@aJgFBRO*D;-)Cn#^SbCT}Ca8sxQAS~GG1N>V z)w?SObU^cH}r&Q2d1;KKS;8LdwYcV6c>da2{7;NeE%KYy9YlW~KRQ#V4fLb{I%`!Hw z7Tck7ClU@U%O;M!R&q=^$|mi0eBA87KfwZ*&5EMxFRrtywx(V5bQl?Ne?B+QS`>1l zZ6Q}<*UZqbrk}0Ys^_p(8>?stSKG<|rbD!smzN-w2r&u#a}?5bBEb}Qnh8N+2>Rs2 z$krW+D%`~nZuDa$XgMZx2%SflFtIV}P5hO8?CzC>7m=97FQ)3s$yjVBHgA^hCF;zI z@+qx9lrJist|`ivU$6tx+1DH9eaeVip~8ob$JO+m<&w;yZrdEC&y|GG1s^gDeREr* ze+nD#WNTk0o;@3^{}3JJrrxz!%*5+STYz!vlvN-V-TS|jg0=9Hf-fU`9YD}43jOXH zMV5aIc4Iac@oZ2VK6<9jkp@FqioarZ$@YqSxO@=~7;`hZ7q+m4&HLR)+v=>h=dUEa z-Ydl_*zJ%jb82GEaI25wTbOcbd#X2z(tEjg27OKuD7i&fJ!4X378V|YsV|i-_lvzM zsjJ@;B51Z4)X%~fYd&%dtc|8l#^(A@EuQY@ z?ynjG?HVTwJgg@UaC;wYiDU-^@Mf{}*-g=;!ut>9yUc(Y^d2C;Lb+Tt{O4R!k-<^M zh3Cq2SQTi*x5*R>=xPC(m!D+n$kGr$%qq;I5>h@tc?APUU9X*^0(_1!>N=E$ORuCj z5-fAG87ixODp(!ik2x1E94gpc3Dh<8upgxGl?m`-DvK&Oa%J}`Q?qwwM~~*Z$|?Ao z5T4Ao${>(&I#VdR9z09fU2QG+*zO^uklIamw;ow`qNa=r9q(hI?#QgLu<(#*C`{jG zuH3fEuP@xmaM0d*<0Zx~IpVz{>xeM{ivUQ>S|#?Gsk1-aH%$pl+xaPY4^2gj67xH0 z7+?F{RT&I4lOPUDW3Y$*#PHxw|9x56nKyX7k4SEw!2JjC16k0g>;Y&YlG*YwJY zTCXG+Hc2xRt?BP4Ohe!3IUY|xS>QEC#jLwNTgt0l_iEeW<82%*$4tf8#P2{LAFq%K zWiZ``fu@6eJR$qvoT(X-Ddr~M2aBy@!Kf?tmDfoLhkuRn&V$C7SKxjUAgU(rrzxMxF_xTxtvx2+#sB+Mog#%sjj;C1$a{| z5`(nw@f32EJl9GLU{CogX0Pn~<}sJAIpY7Zc5qY}(kKrV0kQtA!+R^6?ni?!C+8Hy zmD3{8feGI!Mr$g5)HJ^P_&G#s_qP>_yj-6@%PFeLn`#H*C4MBWPh|A|JtJyx^PaT( zt(_50G}Jp%spbcmlk_skn`qqo1{0C(VY>FL^p!iYe8m&NWRY+SWs$nYNti4*cgjte zNm}E9z$p^0vd@Mo2z5HRL~eNb)MnlTX=c&9;z=zPiBy{@dxI;cZtZ>0x%tKNCeB1p ztv1P%)+tk+AzrHFYvOe{m#htbHOwL=b4f9e=by=6o!cZx3y`*o!hYlWC=RS&i z+%w;!d@UsJUX#z%Hf!JQEDb5#E8iHJk~frQ>9Es+8>5(B446Y5Q4fCh6!1NuSf{v?g67XI*`eVdekSS?P zuQpCBmZ5Ji-t!pt|CA8)^);4Z`u>pjf4jmLP~bJCOU~X+@UqhhQfSFC(O=?Kw~=%7 z%v`qUjw=)ASoC7sOT!AV6HzO^~8hA6LC z|F;Wp7$YvD2gC54nf)>fto4}T8aJ4gpHlYmDTT;77jpVwF+!A<1X}aoV`qjtlPRzu zBRU)KK0@3!+|Tp+oFr0|pY)C5+%2CV6xd*wZ@7|VTXBOGykUEcEggh3fEY1OAx5BM4_Z@&e$GPq&k=Z|t zSXHUib7*S#rQYNTm^zlKorS@i&4l>@-ItaJ+o;qtIV&opdV{5>Y;+c~L^#I$9w;0~C7Yk!RO(xLC75FkIx8q}d-;e~&rYe$QW?z))-7D#M0-#=)Y2Ij zsVEUyfD8Ju*o6^ZVCO=TatcGmvSSpJ_YtRpZ&kofWs4Y{zeGxH7*VpXH{4hiu!Taot&1%+e;@l$$zT6}F(b z7Y}2K5%#{y{jJ^eAlPjNMdabx^Cu)tn0)=u43~I*vge8K8jKeadU9;(JC*(Nx{u>2 zowh$q7!&_6&YaQZljlp)4K38oKKrYtew-ML{1jIEK|K{(f8M`CO*FpK<9b)%`7S}~ z{;@{O+jXCx)-Km-pDQl3^{as#f|#UXBC;vrCSBCOlUbiIP7SK1-8$@|Xk#PN&EJKPvDNWOTa4?8yCu^hQB928pj``Nxh>i)#w3@aa(2luQi_*mBJuGgXBV7^mrQNgfFe?sx; zYDs6l+rmVF^UGWtg+fhiMT!(Urwd5l;A%;mQt@~FouP83OIg}9i zPJiHx<@6()*ttTcC*0GPKP-ykFL2;RDdN{|h7+h2xWkZE-2c4);a6A+I&Mqfhc2Q= z&*9ndHTIJ+f!3bvqvm4X$SCZ*pJDDWYDlZ@p9z+`u->_-S}FN90%E(MOBB zjkc@}T(w(^67;sc@=)ILkkeu&pAbK5jbFouojp8z>NfR0jQ0qZXkengm9#Oi+cwd` z&GCzfm;B35`%7L}dF}}-NVeorkk0>H5xgf@;O6YvD>=H}!WXFeZvJQT>yt}&HcR;Q z>a(PvGdr9n!A;^}@~q~lqM6>O%Ojsa6W#RYebCcCf)8edc*ki?9Zpt^H0#qpU*3M> zHP!aQefy&69@6*e;c*cs&W{$(SZA*Ih} zRVqrJS@s?|^~qOQBV}1>Q@wL%(5CeZL*D+e=1w-1%WnHajkz}nE1QBVvG_Z$irAnY z{^b9^+ut_5IBeqTR9@-g%~hw@BdT}d2yGzzzS`SyO+;m~ZS(k56+aD~tM5yvG!!4S zuQgzhPUmlol}#9wt)ktRQ~BBRQ+~Xzzk6El7mja^3+tALCQ{)5joQO=Op-T0c~tmh zv)NTeA20XH)Z_8TCfv-|^GMnHO5>KgZ`11|GWGT(qwYq_;eH-6bcSDEi0`KQIIurKyC3qm)f1M1`hFY{%UpTu1d!#bxHAy@UrN6 zsK;*FXMc~!ufic%EOX)DUay%aJw8s2o}Z3g@d#1xiR z=R;|b;?Dp0X7dHO-z6p*Endp@l8V8ct$m~i?1%@2iyWx1n{3n;kJSC!LR`@; zV=hmx(dyjioKb%F;r!vSJ!!;PDm+*E59f&@O8QqG`Yv(`HTSD+UHDFwuaP(|79I83 zY3Gcb$4A>j#zGewpJE-n#*VvzWydWTRH8NyjGs>5^eZyPkv-7zA{*!0`xbZfoGXjv zu_}VPMb{^5cFRtVPb~$jX429+iq0W*`|ojDNcZ(tT2EHU&`#8vFcA%?3x zFjbfjg;GLMw`1weZKiWe>)nIA^-A6ZE9-Zy?vvO&@_HcW*sm7W<}pRCORO#hx(2qIl^tsB9pP$|+wt4qJYNKqQKG&BuqRUjbGEPP^oPDpo zvGe#>?T|~Sx5+G-LZ=q+)sX}s>`a$+?7zE%;?Dytzb@I~#?G3Y_aTlw$iMu zz2JN@)2Vry;n6CKcZB`9<@p(pl5Mo%qYQBdgDz1S=-fzy>L+tjBYmnso{>j9zNL4D zX=r9Zs@w0qO4adW`hSB%N>6-pXSltzwNp!GyldN~#+UoG>C3mXNryWATQPTh^hG#E#;(uoL z+$6`~%3r5FCTSipeM?cDSOZV5adH`ittlN6sY}Wt$SgHe()YJk<{vGm&G`e7 z*g4{-umZ{Ra+o+*@`<+|1#rKqz=t0ay-X1km(N8p)0PfZR(4I<>_Hi@B)GkjJ*8a> zA63`QN7R)~#cIgWA_o@2)ZRPHotiUXnZ=zuVKL6dPJHW#B zR~!VB@(9yb>RXzLoA3#rT;`E?on~adOj9T2&6?qGKD#!=RKqKEGBBXGOud|Og}%L037~_Gxo(n6mx!R=$;)%qxZf|EUm2l zqDGwI5AMV6-Up9u`4=q?_S6a$kWO+(9asHh-D@i=J#zlU>yIKf*KTM$=w5$6&m%TZ ztSZG`s>;wpx=USai}wdxcQ%$6H+{0B-_-~h3`@qI@oSxYABIjD^R8lsbg^h&v7D=l zcD}OZw0Bq&Jz~atgFPDe>{JQ%ZY-B69d5qHNay^Wi8{uWld*(yhG8dd#JYdp+$uW7 z@q<@Qf_FzWFmU|a&(d^H|Ni0>Rp~m_xQ6w$Tgnc7>6Mn~z}0B`?FI~$78Vu9?XK3$ zURCtiohRMa9WN)tV^>n*taPV-_l~~pt+v&q0<&B(C;gt5SKk7toxSElV)318;|^3V zMfYYup0eR7w%qig$di6&Pte}x-;`W)LKHq?$0b5+>fM3=IbNl+?2|c^w_Fwk=VkH< zd~7H`=n`~l9~Chyb{HJvcw^A_pAY6)y~NMg?d9)#8Q#?Isyp(+)21zd_HXjw&1PpY z)FqFXX=Ogt=CHASmxuNQ4Laj9Th@e|r>DwGzb+5|bdq2F_H z<&@5%Ld;aI_OgEMszsnZQ?69(pq5yJgOC!Wm((Knc8|3SFEos)2B`isCYQEN|7vyg zpZA@R#lD>|N3^h)ia8sxi*!Gbb_luEFhd-M$%B zk2KZj>bd`U{D(vN`#zAHxMgmz*?6SPctfSp%b596VgGW?Bfl0zAI$DR%Zw7IRVU>f zt7${Z3#pUiS3)wqQGQl7a1V^NF-)AO`nrqqy56g8kcRpOw{tC*INr(a{;_Xs%MSga z!$%6%E8XhL5qa(^O82PdS?vDiZ>#J04$90$C&cYtpinsSYZGv%i9G0+b!Lrd5|4O9#q5j^HKZZr3{1dFoS|lQYb(OyE z=3KzXG;=kVdTS;w7P^7Ux$*YfX;x_J{6wPFTQL_NcqtsWqj|Pn;#I#XjOt6HcmzinqHOZ{o(AhY7no@;;iEbR)LV4nocY zFIIWIi6=sPE{krZ)Ozzh`l^fZMFHxtbE2j+b6qq~4vIMN)M==jY`t4*4Qnt^Eac$U zLPp}6*~j`XUb?iK7;bXBUfdy9ABVO#Upa_>#G%7AtuU?d*k=)ec*C=m96){!{}|RF}ZZ5Dtdhh zFU1Jl2U7L>-pTzSQEjXA`uVR+C=+vFuv7dofHS~owg71o7O9_B86Mt`p(!Xm5$MZ5 zG9dnCjOV8iEh+?>zV+6kl+)@Vm%e+!fg}JDGeL)m%R6@NBz#qbIIe*x2JD#_31?x5 zYYo6{XL|Q`Io!PM!Ag@Au!WP|2Nhe=HT7MTh_N=Mf=D!XrmnY_`g`|ET+e}D`)NrFro4mk;-VNthjWod0~ zeF-WbSdle13gNU3s>Rpw-|ntIOYT?o77q_~{Vx7J-waDSLs&WSTo;BAH{$F~n$|RP zid%;Us*=SlPnesJZbpu@FDQw2?((q{J?Bn99ottvaj6k%P zkaFG6cX{saxs&g7gLRus3byasRqeZV4;(`LMtkG_Umj9_EpCT`bn>nUqtg zR_3iV>EUg@!hC0v^Bi1PF-81u>`fn7{kKu$xT@&8`z&l6D(35!TzY<(e4XNq4_ezW zLG5{?jH-G>%prPu>LfVWpbkB{RCtI`uKix&EnX!<;oQrM83GevIy`KCe1Qk**E1(i z-Wl!v+Xw;x44;XU7r55Mtk!*X`8YU09~_fxb%}I_7{1|qs)M_EZwP-lPaIZ25(Hx+ zM%?Kr9Piqe8O)oIR0&n}?pLdB#p+akRUX8+ugtiOF1v{9(mtPIWFTzTUH|SM49B3W=Rv+0NXg8|>X9|CA!R{`I`A zT#B2Z37TCv-mU?#eK_@sfuu$8c{ z+A>W;l7Ie=@LZ;(vHUjC^f!=J{fRt3@`4(9WZB^hb>n}7Loje)`wpqluJbt;L*avM zfJIGH$t)*#UF18raXxWsMA-Nf(JlD_%YvD z5kvNR*eKQ_FpWq{K+;X818asji4wsxJej^*O6OeP4L?-K+=|RQ!4_tPT4|~6wKk|P zPcD%I`ITFJ&F7QmIKV(}r%C(hzm7S!(fjk61-Eg5u3P5=gd?j2oX;w!Vs~JE3pYf2 zi63@hVPP!R%{%)FYD+#cHqYLt%3U3;=XMrmYm>Km-4Byd?3&U}NTh9u-9Fsgf57~H z01R2CcX{cN;0~H0^wW1JpdQ@816}93MVud9;5}ZYqq(oPX%A%=igA4yIFlSza3}7A zeUGq)7ke_kWn^URfd5u&Q+4M@+lys9_f?|awg`#F7r`aBEq-x}O78(?&04>@sg6|gl1GnsSJDXYn&j&jR%$xBt;jDqh_e1C07;<>G?0q zgB4Hg@xk^W^j_R;dv4IhC>;P{3sgv^fRu9ZyfE3w$Puf#ld0I6 zp&-pmKdam{{psCY-UXKV=@g-R@244?%&Ln`glZ;7^y6C?`=jnM-g?jYxSYyj>`rcA z@=7VAg790$2->va71tN}-<+NE^5(lMXa2s=KD`BJFt%dL6P@FTA6LfJbg|6Qs>Z6I zT?vXuF1^=Fw;VK8`E_i&ay#daw$|+7N=Jv9$u*r0s=Q<{SBNYECQ4IyQOFwU9jQJ8p$9CFX%N*HRo+q9 zy=d+}UwUgYD?x+~M&YH6&UNp%wbSR`I&LP^87)>mQPbbuR63<6`OcwZ#qAM9(>Q@(%@{^l z@K`uAeSwDwD-x=S7z7zWBlHlVj1bWql*#&EKf=f|vLWoCLcvYQ&bY$A>@|ENXnajO zYYlz)Gza6$-?&tI^%nN%z6nft;Kbg7MY(jN@gt}cOk4NTK z*cT9X%<&W?ZEDRijsOyc@s%#7_um(7b~u@O&jd+z_oHW9o7p( ztpks%vK8ir&yo``-#{M2RBmG{_#fa3tO2790s7uixm(7cWz96_tN29Uv_G4@++(-Ui+3L;Gcu>C04oS`2YN@A)_CvdXL_&98K-`MKe>}f2 ze45$E$y_KSh7z6cBRnG>FO&F9gg$ss3uQphh|u};Pg|uw&N2Am7Q$@+77xg5gkDUn zP4&7@rqe<6Ko-W-lx1FN&v^y?HahpQp#CaOO2^jP zgeCv{x`wdX*EjG`S;UT+nwzUOI+_wu!p2qd`b}2GbtbU^5OE2Y63kH*OUtRPs|h*~ z3o(m3hTyvy|C#JR8=-!2uV|n{g5eKVziYaZ2NSXf4)R)<=efLUE7e?0h9yp-8n4E1 zquA?`DiPd%eGQr!4*B`n3HTYHyd@qR`Pp$GEJ}8_IGx&l$)IjZ3sC!(ds~L!vn@9nOV5;u|;{eRFd&LS8i0>qRwK z>;*>u%6X=CXi&A}Xm+hkTWBVIS$yiWA@=lugYWw*@CfZt{oq6+?IF?mvST1L((=H@ z#z~tl7p@sbx-7~?_JrP$YS%w&N&1LBrCiKvgE;9FKvMJe@eu$qu*7y)238vQDhL1B z3oZ=CSrA7=JUBzxC8%$jBhwwd7x6}4EuPutUU+bPchuA$PAc5n+29@$3kKo=jIwR! zt6^|xM8sP#t|1S@*+rD0*tSF!D&qV*XH<&qG8P{R0e$<~51s>?F^i%oc<+4pfcX6? zDu(-SCKium?{v}G^Cg(FVXaEpBrp3nfa-1Qtm$7G%5!+v?hbomUz2;H-uDFK$3p=_ z?6XdG@*L(>pgH{2pOm>cC3-K=b5Ww_t7xq*bFBO9YTWMgE^9H77+5tm*kUDi%LO`>NKOh$E(1$-jW2lE$uiF{){sz{|!@@I*1_NxcSv&{3 zSAjSd^FlkeQ(p{)ob0XY^=nZQ?K!yK*7}h%o=Z;u3#McDAlqN91`R7xdv`q_0 zMP2#g=r-bL83#L`XScn74Ft!kH(GKHtOH*~su0u&{l&jM3=~fe$`0wJG;nZr?{F#5 z(+auNb(}4~EN^2c3~A;%v4O7Gj~18}+gfj#l3KL!5mjp>2+9qt{wExPUh<5SO6yI|dxO+dL>p z-QC@B4NuR`hI`ELaSfFH6}MX!aJ%S!&%7{jN+xL2Iv1suCy3lFzL`>5u%u|=FH_Ng#KW?_X z7I@BCl@ng6m*sk%6(!fPUpxBcrTD%x(nBqG{4T1V-_*OJev77N$>|PfY12%FO?noc zL8X~cEo0}NtZcbQPq;1ZDb3;rsr@p9y+m}`+z!)a(Qfqv#!J65`La!|F7-NVJw63K zLk=qoqvu@amgAKMEwTGuV9;eDspg3c=6=)AbEmy=5cIA7}4bQx(^By6#>>H8R!bLb4wfJbFYu=Ch4IcW!il)I@(9 zya-(~sDtW!*s>eS{96)^?;5+#_$2zsfxUh~JFi;rUwC;ehk20t9(%`|Rn3!snE=v8 zSZom4AFuc!x8wUs|5cgO_t?GG!K(+^nGYtvFq8bz>-_&vS~a@HH|}FIUiDvXJ>hxP zkGzKkdA*e$?zz?V%Zi!$b#%bUT(r7Hyts zGrqKCoh?c-xmI8;et}=<#tx^l>>+A9yXZO|Q#O;0ykp8QM8<1Nledn=Z|2-B(|Wi! zU8=X*ShfE`Ez4lM-HnhvTly+O)Y580%v%?JPgeOE4sTks#wGRaDe3bB&|06!Eel(v z>B#>=0$a>z$kYpg+%wv7*J4i%%zt|l))`Q>aWm!Bcf3RODVy!|XC1CidmWVWJnkS1 zlGY#XP5cCQ+!kZc+1dEC`**%slgMi`y}O{a=|{MA7I5!H&3V`TYE|2jLT(rBtzUvX zesQ!Y2n`ryi!>YV5@P)EeeUQPwjpaHj7gZ%H?2{>wL6LTuJP}|aF=ff0!%*kK2XZ< z0?iU{J;bDyOlHa_@Amf(4mg$BUb&~b7Jf2i}B@nPG-O@;AdZ>tVUtI=ojR7cuU8m@c?C^AhPM1v!11A$%s z8y;*!GVaB_gy9s2sTQJiKJkZA299~!xDV3+0xb}W?`>Yv>M7m0ZPtCf)4`GM^Pe}< zlTl`e*w{WbJ8vJ}l*(T1DRf;uox7UKe_tvh*0=)h2n}C|ZE=RvIsLwn(<8r++PJyb zPjqdYbEwD;@t$=`be*s>t(_RFkGC0&m`|Ymcy z-S^30$N0A+=nDZ8xqt-GkMh9#U@71KL;Ba^Acu(#g&;@1s>uPB_~-OTcj zbI)#IzTK8@6(QZC_Qd$=k`yuh#sbhda)vpRM+^KA>iQfX>1< zpSreqgO)?(H~k~yP8S7E?omCmQF`{{CEt98gKzpRq_Yl|JsVj!5N5=!6RP!pG4&Qe zS#?qSH_{;`t)wDd0@BhcN~3g0H`0xOfC7RvNP|d7r*w%(rzjxZE#2^~`+48_{_l)4 z4hlEtoW1wjYhC-S>$fQN6!T}9_o?Zb)s4nDV^8<6g@P9oX7mvibLbu9K0N%45`q3^ zR_4p0a-qjzaz86B{pnEivGeWa8?yQ-b;i_n@0T6>{(MPlKv{}Lyj?-SBEpHHrWkV= zMJTDrad6hdV=I>Noy@L^BAc5*l`mG%Gob5Mxt!63rPgUh4Y8-HI~QYXEK1g>-dZiy zXmk|FckxFYENEkRC$ z;xpM5(VPk+VjR;u3ms;R6W)T!-P1OsWq}co6StW-$I+0 z$hE)88S>;9+rb)sOef$l-f~}I;?ov|2WIZn^le?IK>b8}p06h+BAU%_D04r4{@X+5 z=-w+IX#PYhdYQ`jwQ?DK_CvKqr~8_iYIYpw1ESxPbtxh?)netsWqyXf_kQ@6?~bj) zSjE6IYfR_KwnzuMMsgS3+f6T}dTFv2aAw|&p;Pcn#(egd3F+t$ZAp98)k*KSrV;e% z;eFFpf48}CNnr|Nd>sV?<_RZb}LL@k$CUN*g?s9u?dXf2~TGKPC=CWHva2UxXl4XZ% zi4P5M`sF0bbqMY}{BKH>_LeoA`7Bc?O+Q`jQhHpV&wVE+b=&_2Ykr%&!iq{tZq>Rn zWThswZkyITuf}IEG6ON|kz45V5WmgucAQy>Rj4_oJob z0gmTF7;-DtuHU!D%S?Fx3YFl}H#TadSeRY<1^dKH$~ddqV`Z;l6RzzmwD0?=cC%?StnZv4Fozpr(@DX|C~U--h2nymII&W z$}cA8_vmT;bj}zXT_WL419x?$k2d>Y(c5?wV*`w&31l}vj5AiruNj#a4ny7~yk3T1 zg?*@`oPK+O!r4s9*w#mHb2ld=8uA)|gQ^Qp@>#7f!vu{c&?LZ2RxH0|j2kTMlL zMKn0K)S4pkheiMm^{~0r)+t_zEt;Ir();niO;JJ2$>+hpPg={!?V5a6JyjZhr!l`g zl4aTxkd6m8Ip>e3aIcA!jMFIHUc5LBO? z{2Q0>n7_w#MZd(%wtGt2)o)9}tHj4ReTvy1^}f_eF=kP~rtn%8e|P7 zIfW>ZR`~V4d=j;}L&l$KY*z}}REi(OS&xTbYvcGZw;0k-kh5{j#A?i zk$1ZTu~yb2kNsi+Rl6-A8%?ya5jT>3C?TZSo5s&u-zKil9z{JPz-q9q9)E7Z%Z@?y z{kh7`b9OEufDf68Hdf%x{K1$`Y{SXPw5MSjCD@m>N#+gQmo!RB2<|4wL|6Z^bvJp( zIZf#vmJK)Z%R$%g)k!$;c5b?4#a=85tnihZ__pxKSkAuh?wp!=M(MO?Tv=XK%gFqA z?Z?Aq`FU=JY1(+2I#Qb%bHAPsZLu<4Vxk5=xIHtVu8sdR=I~9fmVShmU)UcF;l+lr zY&B!{x`;!uJB8yV6?yHysLHN%*^S$(R*jAbinqs&kg77!uWG$xNyh@_~{1x{i6T4@TV%aLcMqUZ>*&cI7>A_PjLHQe{@2-Gtl}0 z#nFpm>s&RQh&PYwnIHB_Re&an(dvn#Q#oJLMDi_Fl1wi$cDs$Q_p%0M*Unk1k~7hU zd|x4rZK0E-NR-#ZyX^^2I%Wx%sHV?_(}abn$Wc`H6WY^iKAf&s6|57_$u)%QSak09aAETY;O5|>)ysM>{zM}G9d+a#7B3JV6H)ApMW>SR& zrUHK(YnMlx?mPxt=#*mSdZl0)zMy}(_kxMVb|?foIYd~ zIgYoBIcauD3n_Z!vbziC5Y~XLtT+>5FE{dbeKXnYlgidwI^a1YVgZvA`-sBub zU5>BlhF_Al7rGl6$eq^R^3la(5XJh6-nMu4(T6bbex}Eh;`!k%8+Mc*!g)sjDA;Y( zHeXNHAF~u!Utx=8cVc08=RG$``0VXM*VgB)s7yde+4{Dm`rW|2OUL+SYR11J$QKOl zTQywk%mTGfHz~bd2iCA1)J0EL^p^!z%yTNJ)xevHk1XdO*?*Zh%e9~?B#Zi(CVe8A zPtMN&$Y2sFMKqw`d6hIxo_|nd=lr^{&h(Ho+Sn$(jJ2etpSGC%$SnPCs@{@$;RjfM z#=L8Y&j^zX5z)gZ9qH(;W$UyXP4JvhqrE0h)%yIHVa4qY4b88LkmsIvS6Wb6XJlKp z6|-aAGAkcSxv;YzS!I0ST0(C06b~mFvuYkE9CJY(^F?Ff4Qh|FP7`lV7I$xSnIUJ| zpNZW`V?ni8Qx!uHya&;Ajk9U_;mR#m8>9(KG zwIb8hci8j2TNGe~O_0CYy&ka`m*AjJN*>9ZF@;x$qr)c& zYPKJIt3WAq58*$yc7;?eb5fDOfLDF$*>!WwVarD<8NoOfRKCRa_kUcJzJIB_dCFZn zAS9iPZ0vKQ=DLrL@pE6b=j@WABXvfJmdEtF)o9pY(Hq}bqYg}V=ReuhI-x^{WY?n< zRl64QBKU-znJc~jw#fc1c(5lqN0E3KOtfbSiQN}^7W!kihVM3Qaip$|2pHp)sWTr+`_51 zKG{8URmu69uv|LpX1Ahp?KFACgh<@tf-q^BJKFx4F_sIF`0cz1zjG!@4Q5F0o%imI z*o7Wy3GA^JQ6L{QZr3m3WR0nR7CU=1?shN-uO99`#*DgFW|M1D9mkD1#E*d|GS;sl zTsrvVS*_vmuxF2fL7MA3@tkx*_Cgi5eLCH2+GX(>0g2|*2hC%93DR~}TJ03YJZlT+ z>`Fsll#LZ=lCDLb*`X?WwXF=!t=WF7!5Oi)WM1m!8%8E|OT{hS9(k46$V+8#`a+S= zFpp8g9yd4rtz;DKKCvw7TXAv6FGa=`T5&u0G9-FUcFVtm_>;;nSab&;a@($Bg~^~F z=yz=p_uHA(Ijm%`Q!FUA&Qnar44U~u7R>&9FMP2&H|;}+#F+)1vay4>wWs0Jn7B$z zx_63|JdX2^7Dl$7?HHt3ciuN;B)rTs`MEeY>9@yNtv%P$^o5;yO7y7>j_mJ|S3^g7 zw+8(}DkWL}s>aiD{Y_btLOdOZX!n^X;!6zdT&MHbqE$8i^7qJy zZdp7zQ08k`Ezi$;Y?F&)Lcv>Bj+^AE=eTY@_`S1Z3CVqS?yEMhl?Av+)Ji2aC_IY9 zsxHukIN#WZS7Y>~vu6E%YI(rJONp#GCFSxQ^Zf|&lzDnEt;H>ciMOy`7Dm?jTxlTD z3*&r|v3%qyhl!7Eq;X;W7VWOHoc7Kp!LdNK(%kl}^~rhaahZikTs{V8|42oAlK|dR z{P(g-{D!Be%!MaQoZvrg|%Z!;DS^*F)QsI!x~ z7}OggcN3ob;m58!QS^dq59?bM#Z%E++j*Ad4?p=KcUs#}HSCKf&@+<}wAxk1){;?n zF8t%lm7`)I>ppOFzf-sEc)&$@iI#92Q2xtETa5i$rE_JHb}ln^vS?&~(ArK!-4ano zj`-5+nhAa!{?&+ z)!|<6xlL~ep3<+o7!uKwwi$e49j!!Mr)-TiC>>Gc{NV+7v=_2JVtw&a z7jM!VSL6UI&KmOz0mZ3)%x66rOql8i`&B6PpVFRfYKL;4NzpWKnNySfQLoyH|B7xy zC3PU&zLQZ^QZ>G4-1=xu#1IEpWdn=L%=)0)OCp9^0ERXQ^On7gS%0^H%bek2(P%(- z=IZkK!*|&61>bVL={1Upel8*J^@%hxaSy1&Ofvhh4G0ptl1lm2Z;{-y^_T^%gJpM*rqI3J; zFElm}zF&J7IWgzcD+p$k+W8&T#9zIP5hTlKE6ZgZ+BDKj{6ySyFYdzR&KWvUnmK#( z(!g%D_EM!zN9lB{56<1&Lz5w;_HW$Ovo3iE;xHm4W@<8ui0GLcq9GWTcn|gglF&5%Qz`xTgl~_n1^(dsl``Km+7DKkXjdcj__f zl}OGpmLtueVa~N@AFfci`s`4?&IDW$%`Y&p%YIbCmnpQF==k&j9!%!!i?#Ew9xy&f1AB! z*C^kru-=Nt+4ST(m1er>WTM^Ks*%>cd%VxR#w&-zqIIIl^qV-lM^eSW&itc;w7e+h z(-A{84GEu+pa2|*&kJ@SzogaqZtQ7J75a>2V;@|M=Sgk9n%Hf-e^AshM$R68RWx3f z89T13@g=&(XKr~m^UQMh4)T9m! z)kKz(G93-4p)J*|Y|Tud0U1&prGqNku{3j=?ap_1CXKREAHj5t^eODU#Z75HW9SuF zyh?O-oonrqub+w(MBSt$XPFs2BtAjzpa0G7qZ_V0b5F@LI0{&}uQxB}QxoKhJdhK?v)KUfQbJeij49!^|`S_Oy)Q26{}o0m){GC+1$YCBygR5jXqrspqzPpqI(6}`d@ zaj35G@r+Gl$**z zqA>ju4;Q4Dd;d_u3$vi`pG9%sv(lh{nQw|5R&PuGdWD;-A8LYQ0m^U=!j8;`nZ z|DF=XO-!dxZC>~6se*ZWjR!rnE~wcyuy7jM8xyORjVpDm1B_21gTC`jZl&MlL?o?O zylY!&GgCGnNGZ!YT*s2I|#S80EH^wKo!o6C@OXm*Nk^J+5FR;deOw6DFwT z6>9eP_D8qi$lzUq=GvZzf+R|%1Y@*H+v0blmJfR?xBl?pnKxmw&IFz=>d>CosAo>S z0@a4;>>J<3kWmaiDrhca8g%kC^+{D%+|I`aInL8}o^7k9FvMf4HJF02uN+TB{{vJs z)6ohwCY@9|-3mS<&sXK+g1p;;e-0`BHX{WWw&UbLrmZt|5Y4B<9XltljW0hUB|Wn~ z5h15K;rZx2Bqq7i%>+N(3ly%)TK{I~@Jw~zVbi&aH5yjpp-&w#N83I%=soAz_Dq_f zT&Wo~M`7Q%)zX4@!6>zF_VeYPjpKksbE&B1p)3Bi8jX7e>mv9%SD4DUA%)vnTKYfL zwKh@r&2UHWEwj-o^n|=U9qi4)9_X|fayX{5|NQ3^3cgQbI!Q=D*KMw|=g86Z+dA4+ z>+0=^ZVa!kbRA9kG;F`P-gec!J?LNHig$*hCRXOat`HMv$5hz5qjvhQHnva9F>P>4 zq}}F2&%Wsy^0N(tl!;Q2A8Uz)>Lo_$7-F<@i}!{O&03mVDfxV{c|O@FJRiqH(`69> zrss`*uj!Oe9BDSKKt`VyvjYAj&sB>Dg#?#=hYSz=#QNdvh3kun>wT%`6L}S$T9~(L zi0$frFSD;ja(-SqG9%~n!3_8Ah#;%dlE``5R%Nb(o|%+3$sNJ{p~@xmx!7<*;L$X) z6h~|8;v~u+XG6*29hL0#1R+ro9Yq?4eY3Y8>6!Bg#U(?6l1y2ZqS`lzYCX(W=vYVx zI=+=WX4a*>J&nTJh4#(X(KYnNi+&G@lwpre%$f>zuG*yA4qHJXQq>e;0rUG=;*eP5 z+)51}%Bo0Y;p8O z)JMiV^!DBwL=qaEg%+*^8@+AQH^O73Hz4(T@vv(hM*XTfgg%MPsVkJ=Sg`XwnA{JS zn}lF8Uo6FSn4NHx2O6;3eaIfi{BfzRa30>XOq2McB8Vd&<3xAs&ouUIv2d5OnC)tC zxv;0x7^&=~-zU;2(v_6sUrgz{w@`~oS^lWg?g-ePqW<_DGJD>Z`(cu4Z%Qt+%PBRg zDfp|AYw|CZ82a^_to*>Bm$9C{GlZ$s!B$NhDh;Nl#~Z}R#UE@G#_nXie;9b_a8Fzs}aYa zU6k(imV8Z0qo%YEHVwy#RUK@#U?BhkcOFHSB9*`dvHcKYbR2=s-=WS>hkrW@L?Q+ZVH8c&IhNA$d~5V~CL`!-aZNVN zT)Y`A6;xrBS1ip4Ah~);bZJi-ndeRDRK#Y!yP>E5XVDZ-uWuaLbP)i-^)YYdLpEO$JS7?8qV^+nLo2&!ywS`yU6uSWzD0ev+b|kpAZFpe z5&vlKobz`=4prPk1?f!kx%TY9{C9tY>nd?2`35}xV;k*`ajtUe~P?RiZm}nOaHW&(wwUs zTOE!%p*H%hZu?ihT;hv8d5}TZqS?M``9HDvqaV8FLdA}rJhqowo0R9dSoCS5fvfJi zs17@!j2IHlBQxJDE4&iv73%L566h&Z{QI>5@Z1|r!_p_cQ#g^13>-mN`ZmLj)`Wq` zJ1^S_cWDbB=<7ahJYr3{xO1t2!slDWPUY=XmLTZfsyg;1!x)z{3UeT@+8MFN=qet1 zW_W6}1$*$IkW%N0C%ykk5bKV5_r4VJX?Fhu>5!$lK!f~A%i5!wal$wcC0#~epDa>F zOI7@&Qvn}cbcQDdA0i+sMfQhoUbHO+zH*&=e@mz5v~AUBh}pw6r>41ng2}^)c5LnT z@+Zl8xoYD53a2>wbx~E#w)rHDdZlT(;dcb0HdmPO;cwNyh%-HBC0l~1$+fYY<>jhf zm0K=(HRvsg_FtKXOVj>svTVVwIJM}n4$haGeKn5-J0_ib5f!)NV3iA(Jk(tm-9~ag z(Kk7$lQ!RN`jIQm%Ht&_8|0+AcC$y3t&LSoEnk=2e^=)cJEHg&Br=LAnMM!SL}+G& zFzpz`x2bh5Ue@?NR5&M_mQs9iZdgYgkMdI81Hv(QRdy7;+;~(wXyP+gflb3#+L!ur za}PG~lPt+|VQxm%oA;b?Zu+{i7gIJm zWmhs!sttCqhH`rhi?w0a$K`^!z-#mx`*SbBwh z*mX|ckLFZtoU+g8yF}FI?(ex?$i0um%zhf(cxbH>W}qDR1x|ob$q!G4{+@K6s#e&4 z<8KCK)OCpCE9pI^bxOTijMd-m!Tlv=Z1Gnei!Us}kGkDod)EdmNk}6?^Gn-B^JB>=m|+|42%+t*P_&QFRv&MsaWB z^Ve1so(@#OL@n*-_(rlgT7oJz4rC=IokLqqc#vjlPQfbyk_X-xXgj}0_+bn_*jiop zzC}uuGaHy8Z`SfnAfsk)x8M|&lzxZRq!g-@*IC6iv&nY<*Ww55aVWMlDf1%~il5QsV>e1b6_2vy10&8xSmSh>*wQCtt zm>XA{C$*q$=X(%6QD#S6L|xR0^=SgxuLL8fw__9AODU%IUo8K@;dNw z$i3^%jIZokX$v7ViX1h+H7$~DmLph62}x&lhmk60(#&nYLM)R)%kmI-9U$r|s==fDh;H6QnL&%Oa1cFHC^ zy+IBimHO1*4@&PzLb}mWw?MOhfzb3u;&-E;hp{+lF&x%BuE)xO-w!7HGH#*>CdYow z8jc3eoSEZJHzTz)-)6?f;iiL4=lNrLdI>QO1wx^g%?887)M^?}vMF_XVfMLJmXl#AJJ4*apU*Nm7I2 z*r+#scE?2;QG6(eV|Tul?TBr=CsN=&52Bj2Nt3VkvXaR6E)8Iykqlm~cKgP*_)wu| z#gzF7pKvC^9Ou|D=VI)MOIk&E`sm5)Lmd_|w?c`IFf=an4`ME!DWr#ILnp z2r=@sy|o>r{=T*|^*YhgdaRWq!CM(TJ|Fv7DssE#m}O6Z_evheXL8ZK7-elaS4X9B z;GhaG+pE+nUh{f?vLZwbhqQQ*l1+!h6Y8%MXHSh|z53^+Ru^l0o@AWL)4hLvf0Ivq zVbP~%l|aH4dKq$TR91!m_m8`Ub_6sdg+J0so;rGIxkoj&jgp%_CiEd9fPkQ=|8LQ> zqM|!xl3e)i_=-jGB_zr**VI|oSQ?~m0m=QwO83UXb?Xw6e$2^qoq2Rx0c#<`&}%%) zt-vSA_B|@wxmFwoEhy!&UzsZIba zcoFYrgF&x{$c-8LpuU=BTYYS;R-HN8Aj7l8+$o}hk5%c`XIbWZji_rHE;A9v0{tI- zD8?JVx}JJaP70YjQ?mJ^kT&0jDq67}{+?vP{6hM(%Hs*6tr2`xqWx zOd6Ze$uJfuv&vbDIA=b|5RgDOG>hNlfLCdpZfR=17N7)Dng})ieZ@B_wNqf?+coc) zS*R^!4R0^bsrlSBAuY*zv1MD&pqwe&&du^k&7<&RcxLbBkR3%q|Ck=XUdj`VtmK4G zGcOZ1P%=GynSN{Z?yv2>8{B`BIch^CJ?M|t^jk8DWRfjMGU{h2ycYTSCSbr$u69NL zJ49K`kj)Df(vw&FhXo!n9FOXw-`BDTGbO#gYqBLOAcXM>Kihd~h?T>IgC|uNt);1? zllaq!R_{W?qA>fjpss@WU-3GU$+G@ifAKK`Vxny9T&3RF+Q4DxgXQ`dMO9+an@eYK z9DiAAVD@jW?VBFQ%`p&d{$m+bm?|_QTzfObqOwhKk$rcGW$1SP`uPp}cH4xI9CDYe z-s>PPG)$4$is#W;DWjV0h5Ok)GocB0z z*`a+RUZn}Av4Yy*6P6u=!czl46ivJ~naj(JBh)!3u(L zU5jn@weY$;bYr`_Y~av2*6G3Uvyt{v*&W?z&P4F65e;S@FnSV_>#zGP-0eVJb-cUn zi#8f~yhiHsHh9|TBuZx?ppTgB&uHe;dzQiqIKTe&=&aRX3O)OcZho(+v?*}kYij0} zj!zx;2U`DN;hS`N1vR|bO`XrwQK7&pLNE~SIW$U$i?>o$hCv&wGCq7i0D|Au=xw7x9k+&ke7zpWaNOmb(d9_i@B! zV#ZnP|Kq(TC)DBUl?uR%&co~>+MO%-b4OVNP2`KC$PWUMb8!*!fBAEGu8?V~$n zaYDW-8^;}^p10DupZ~+0rfHrMyHX=Y)6`TYUdEqtT7&h7}fG zp9B-!90e1MsYa^FCx#j1T?xl3(UlH7m0e$Xx6|@q=1)}q$=&-^NbLmghVBvKqSG48 zhI*KAX78FyH*;gU_@7=(?77yqJh%7gHtBCF?K`>d_;+p?dE_SqO;BJnz+&Hu^)~~NDqu5Kz{K7QF51UW@-r^H)Zk9S^@R zdT52m@Rn9oG(Afyl-q8SS3?tlT{_&I%>ecy$`DXhpuMM^XHcXAI7kSfgjS6$1+?UP zh)_e%`VZ(0<^r4^lgb-lC6i50v!OWZFuAWi*w-D%>5cm#yLLOZ_;F0cI~Gj+6*CN> zeY4arf7i>&`)b88?texiqoI;~>Y@34I)Vk~NUZ#k%lU=S9lP2oEKJN+OCNz(RzO=J zq^6EE@W1g}#E`&*o^b}{bP;#==~c(DY(V}&KjL6L^UHnLb5yix8HU7Xf9?5$F!0U6 zb^c_z_Njux{Deh@*{?!P1gH`2a3oU#1p&IwW@0mFOoASDghK_;>aNa@Ob{jrM_$A- z^FT>L5N)EmIzG}#X@SkTzOO@6Z-C7QCX{{Gum^*#^u8rWZwjq*NWi^qzo_P{PQ_X#9CyBtal-7;4bt7`pJ6C9EAf zm6>0b{C!fb@ITBkV`z_tJ}=Yh%TffsXHfKl4LmZI0Hen!B=iZ`i3psNtSmY-ky=1! zra+n!0=Nh4VJsY+hD8ThYF>wHZ3sFgE^d>_REDZ%JdFisj(VSCw!&fJPd?*?pC+^F zH)kB=xaY#X){4lGl$UIeEa0M{+VH&Bxps7?5|uR7q08(go;{ddb!&j0D>j5Tdfp~o z-cxz`R!iPHBqZ^!>LsxW2_gOF4}^q-5I3x;iLguu&cUPPXWIO$LiV*OX~OO!`KmeI z^$x)V2s$BvlB0poX+C`!)vHM*g9Ok7e}~ZKOCf2zp}Y_ zNn73;Q}NBfzfj-G6mYjt1+xNgzqvl}2LXIV zY!{7x>YF!jic*|OG&KdG;TC`z?M7Ut)2W-V*F;hZN`i06&W7mVIs~&?huJUCT&&H1 z)sm{jh@fRaC%gNv`Tdr#@bDa$i$}qVgajH|3ft} z9p4fF{n>mvZZp5I2Qi8C>kp-dlN~q5*+ zlY>_UAiB%Jz2IU*b;+&4YP$Zhq5sum802L@rUBIRiO<#1Z-A@=B=-m4*v{7TGX8mp zATTI!yc7t&7XRE#b=gSaF*r0Gk-~Il;N?AR8UIySSmAVKew-%KP3uZ}=1TELnwBWO zX3TOT%Azn{GULc0A6sB#e#Kb6IluFS?etyEXSU7eiHND~6(CZ8lfqtlNocA(W*cBK zVDXQUeqkpiHDuERO1f(bMr8Kmx1Jz}k=58d= zVN8LtDpcqzP8AeIs+{&N4F;6@G^g+MTBO3Y@ zXA*z>2>MdUBJ8%636ROU=0sgpVz>}#h$T0U%1g3Jd9lz}eE?v%*SoMnbfA)fl>m4t9ss{1dQM>g)`xR25KCVY6Va(V)8tJd>LUObxYU6!wghC2 zrko0rnNu>rN?5>Wx&O+qn%Yhks|eq~3LnKz@Mxg;4Jh-H&06x$A z?hwEgUDk#IU{+5j)}(YTW&tw82Y@;VUhYH11joZQRoO_&_uZ!VpFBwe^MgnBe+6JB zLwC>&6_pHp2J{T!LQgT=V^;(P4<;7YS?Ng$L16F8($|v|-CuZWf9}@HgwO?IoAnN# zMRV<=Uv)Y#pwdd3iVljPK>L`@<3P@KALHMEs ziV19l&}#baU3fSVOeQjL;voe$fo#~iUcqvB1ueF(=G%k)z3|eM^71tb5H214_3O$L z+itH9e;Q}iQ%U|6;`sjlq2y-+vi4Zv-7BEkM1TDF@qe!K_12$9^G$3|leE<+@0qjE`Ht6>->hGa8dJhN; z@Pd$$l?_?@Q=S7?K?1F@3-K=v>J}Rc3RyHXNl3$GsvKqwlKNM~*jIVfH8q*S?!zRf z?c;0smTXPb8#PVLXfpb?W1FzY|LjEYLt$b2x=R==VjLL|fBj6+NGc&KZ7~s@N zSX&o<1F($L>!PsicVGu_we0L^zvxu=9o%bzyB6#67Bw|B5smf^)yp@L4ZH06wfS{GLg#e}*}PNv8$OVc7U`;Qk>bBkW%g05v3lp~|N4*E->d_)T1Z z9#s?iZeh}25wiD_C1Bo~L%Ix!21aOy1dxJHH@=o4FsVSG;01t?sPFkui@!f`tX#X) z6w;Jd{mrg-Zw`yFCZ{`OXXOc8n3)g$HBIB}&j z;7TO}ze;U@jGSB^JSwcFYS>|ZGSJe#LC3udDM^4*UJfvEfY}2rzIUGx_dbVvbNU1% zWiHQsQv~1}5;{3YM=r$nKqcft3qMKy#H$SY@DtdyCE)??T49C2&m8W?Jgk7fy0TFJgvsPbJ3&bKbW@Sw~05@&3BV!ovT}2`FQ`<6NCf zvYD_$@o5mu_v@;qx@3sm;MD|n6T2-lt91eW=8Mps}yCeBAH8p}D5GYWq=P+C2VHT^_Ihpx? z+WGtRfAUDJGFpT`0;E;2#lofsn7EY9O-nk|uxv!|^?%}93)v$qSaa~e5ZtJTiqK_u zCQTuhf$+|q{hOHvNzAtd2zw%g`2ZrvX;@;B!~~%Lbc@AkIqL4CZE`wPcpT&(WC6E# zGiyV~FR!fJ1zYcD`Di`=qQXLim0M2&yP~+bc!`)n?Non>euL$oGCHrO>yoIKm~B7{ z@?6hNWYVrM9q+$^mktlfUcGwd0mcW+nuQwU&;21N&p8SpveM1iv{={$k&%&|d~^C3 z1qGAAUgQ<;T?mt!8k!H;*|)Ru-|WrQ!mbG37DXve4-~2Y4D7g+>RnT|eBhQ90#~rP*yMY` z7abjaG8UbnUQqZ{R#rArDDMUbl2U@e%*;%<*tF1ftzZIEQ&Zr_q&GAVI&;gYLL7X^ z!m^RRI|Xh^D+6hWJh{^TybF4?S|Il|uRJS}dtm?fTN_;aI_&l(rAcoIE`czNuy27x z%?y!)PTQyZom(N?o0@&jAQEcAkV8g_fc&2PP5wwU-Rzr!$fsxhF4%w1)*^u`mB%$1JpeK>x3q_A#hUy(+3K4VBZbvUx^APLwOAQ z_acsiL~1pu_^G9yQRK5pxp~%VysTC?Ko6KmB5F ztdw$|6#qzoTsh(M+ZFPYFA!s3(-W4%wY}7*prAlx5QyrwuGvHj6LIHQxVXze+ZwDF z{Efg&g3gl*aawRA{Yn_J3B;v>?1SI$I|Wu`kg7Njo)mX2(n0Fkd^-ZtKL0lafxuuz zIHY);?D!fg{SBgjI|nFo@Z{pCYbIoA9QC5{-g?AmHyO8iFAJ^~=xSv~ZGksJox=P8 zBm4|@7Df6Ee29mK5Sd__9qvpE|IW~*F(h&4@A8J60%77S5ArCnXM~zdF>EZ>TD4 zdz+}gR6IB6s(Yza7ilIpEGDg~c@t+a%bG_ZnOVqUdiO*3d9$dx^l@L;`OP+K;{;>H zPKv&%=t|$s)yu98@2iP&^J#uzs;|4=(aV2LpM>H9CGzhHs+xlLYSx{!NQz^W-T0yeE$4*E{vzY^6J9hO^bt`lrp#EkyYWY{QY{|Wcj9U z#rMKIuU_Qfr03H2rs(#?*MsG$la?!VxPi@&H);-MGbe+7K@Afp5$U}fB?~q1Z*Tsh2* z4nS~*{R>ibgaZ>4@<3a@+)DyD_yD*wL6(j%M1;Z~LNp{ED^PAgW*7q-0)}5>`@L@- zP-RgHyWNJYt|cLg`biH0E(|C_NdEwh38yCwKOmYMh8RRV-O$OF`CuV?WeJ$i%~ zLI^P`5cV6C%s)~g%qhX93Gy8|(4ioq1kCAzTZ1-O`$2|uoZ&!+nx~v$4sseo!#o@K z`O^qAEyR|J7^{<`X(En9R^8ln$aE0b=P)Y@(AdzfMPtxHz!)iXXh_B1Ck9-XD!q=Z z@7%cqL|$UAChE$GJ`fu(UqACXk#H;Sb(n4Lhh13!HVW8G0VhfM^;Zw#A0TMa^pt^Y z1Uy54Cx2_10dgso#XxEn_?iM}F{_Z};$#=$=!67}+JoN^K3-@?%i#ii z0o>3}_xSAzsHmR9xI4_ovC5AEvdqrY1HS$8B+te_+-#FfjZu}pn1oPOw{SdFQbOdtdd)r)h7M;t(Xbo|$;nS^D?+Z+;i3_r15@kTYvOk#!dnuu zK502Q6W+V!Q`?AfhJy-~G9!uh_I4HGU?}{`UoZX;6R{|P|AJy3WRqL4KVA(cL-H<- zDFIdXZtrWcQ&wg&0Z>LEY5D?79nh`GkhY(B`&0_kp#lw=4oW2u-w^U2Aq`DbVIdfE zqQWDCfm@$#X=#bI1iN6k3?9chabPOT=;+)9)eE7bW{3?!E)B9R$Sviz6WkCw*C#3& z!2s`_Emy#ERfq}SS`nf&Xz-B3D2rXiB_)v)%Vfcdfa4#q2<^1U@RbE{E;+9y0f;Z{ z*3~0WNJ1zA(?5`3(18^W=Nja~ZfsGa=S+}jF!J&7ZFY$gz?@wGf$1}>(>NAD6^yWNs*xF~I~G+%JLEiwK;ylU48GIN(*ajy7B# z%y(MwMFfl`nBgTIeh{FNT`g8-oTf;QXTm{UrzE6+C;W`%_1;`&;6NCNReO}%;06EXW zk*@Q~Z4~s|nSf{Z0n4$}C*GtGSwP1IC(qA79R`O%U{8;i#@fJF+(xZPAO*nUL>LNt zh@=-anCZec0s6FhrTOz8Q8a@9QHLWipNs8USQt_H`Apyr_NMa{9NqDl{v?3v1yN*o zLFEZI-~&djU?2((%cpBOQBcJpJoiA8&8RTz-3L!WLL#Erqa2zfct!_60Y=zS6U!K% zAFi`$mA!#Qb}+8%Fz?m?3&{dfsjE(jGqXUmDitS=%UMSKgh z6)5IV65xXx1E&z8SBL6wZUnypA@#$xAZ9jHfGSNnN%&z?+vXc%1-8@m@t|kyfu0OE zL<&hgLO+JG*8)OC1dSLq5TrjV#GZn(4;%Li2w$`h9-x44DG+6uRI^b*1v7?`gm4Ew zi+!;3sA$GR3<8<@xOI{qOcfDZHr&s}6g33zB{(+t43iXb)d1{lMNdvL)`@Ew_ z+2VCAb67hpG%&PAoScCsON9{2YHbxYHG%Ie4qM(tgF9!2?=b~zAHd)K2ji#O?BfY0 zoPne3-);FuVNpV{jrcCH>(iW;2gcwg4XZl|3KYkKmFG|oN&twJNvDbluF(u8JAR|> z0b~J}kYgb{Xu(U;ZRanbKwFge7CI?lBEv4%w(T}rpw0*b4%5)*d_51go)&*G*l8ca z`4L#|CPPpI!C|Yk7as(DyA3A@2eAAg{_=xY=`Gl4AxwcNtW{-62p42B*BU_2$avA) z0Jg$qmc#eq@GSyrLpUu#Oea(f48$}BJ5I#HgQtVoe)`g%q=4tI+0`1xE7%YarwL;v z`Y90m5Hq&VoCiTU2B{blL&UkrFY9GEWk6W>BHWbeq(U44^bOwy0=kqcF`_I6lJox> zP{M>$FVtX$0wz2v*z$;j3%F?` z?qqU4+oTq|D=0GIa?OB*-Ui?Cx=s(2Omdj%@CXp6n`N*sK+Xf&o+=baplmCErRsR; z!7jnb4HN^9%zB6)8MmW?VEP??yi<6$@c|{C+_-+_Lru-#scll~C^^s}_CRS01C8(< z)I8yE((rC+$rQpM6Rd*=9EQzoGrlMKug?#yj4LO;!{HYPJXbd0Wj}<~{D7OATiVvP z$O9_m;NImsFqep67b61M8SX`+FNI(E+w@M6;e4~2=C2!HgxdHB2H`bi1gg1DNx(gk zo{cmdD*5O?l@?K_u-v{wdX4xbaPB35LYf%LTN3?x7eY{+A)O0Pf8remvuPMCgJJiR z1qHVg)Mh3q*yADGyyKtokV5=oM0k1yQw<@=LVgxrJL{(lTMi^zGO$t0NJ<8Jz)*KW zz5RA{ofrn06m~+wa57F(-}6Jn?@ASNeJXOkma_oqY&LAQ|6gTi9+q?ZwsFSRSc_D) zvdfyXuT7CP5ki)tC`P10NjyUg6@_eBiY$>#Lqny_QbM+5OX+DLOY$g7d%d5_{EqiM zj^BUp95ctvpzrg2?)$p0pzVf+KAI#l{NZ`ZbJJh_ddRS1h6BNN0`|;r?eYI^o zOpX~VY|M`ioz`#uKa*HlnFDW#>r$DN}rxKRNBgMYf?H@D9oNmu;_C zYjf?oI*Xe~VQ|)?=wdWk_@95zzbK#0P;-v0fXmQ1*J;n1-g<6-lNz`eGm z*lF+0Gs31z$xamQdfy@HeRgaV!O_}1?JAiK z|78k?up*zG~D>Zsf1Xqw&PZppH}m|sFyt8>G?py25x1X z+*jJw(9lw@6%~$v?cjlE(gKwQLTO`&CKjs64?c1oC z)=najEj5+Pk5ATed8`W+S$edy?cRO+x*oF#lXaEbI#b{-YSvZwcN%rsY|&>Z15*C+ zxQG-$$3B#NJ&8H8{^#aK26KD)pOdCeZNsK(5j-`Oin;`{+(3?AK7mHE5OHQ2L>X-| zpRPlOSjB(2+3Y4<30c8T+^HHo4dK-wv7)epP#2rGSKY&s7>Vsm{^k=CGdvyL0%c57 z+13)GB{wAx5L1b?Nf__ydU<)))r&g=0<>8Nxt>)hDxpy9?(FG8#`M$vdIfu!LR%>o zISxIVvcNf^#}Ad#V7AqR%C?^&Berp#VEeU6u}W=s5R&ClxV{DA@A6^fLn$(0#1@em zjN@v3Yp#{8NLzm4Ss%PXchoZ7xnI{{YHzt-^0%>jJ+JQzW4}YgOK5h+IX^% zpNtb;t1NoS7~O!MM~W@p_P`;nvZU;IsJ^gLc4!YmF`Im9{CrYGEy_wc9VCF0CHIo= zpAWmKDZ4jx=p6k20>X$N0m%B(t1DA+8-|;!J;bnG@{@m+)Uu+elykMr?^-o}T%K(Q zY?Xi1IZ*>7v(1VXEAoRJgEfS$!;>`E8@rGgI131F8maYown^&w5-v3MrB+BM1mc#q zbA-E1*riTAs@0~axw>)n7jKTg9pykMRf4r~<(7GWFWw?v3k68L&KS>s%AtKyF#Pdg zn>DK*;{ttfWXx8X=tp!@3rOt-7}2+<#W8(+e=oqjo*V(8@T}b~m^E%I73nYMODZxEoym5+%084sxUvGK+qkbSjAmiA^zU^0uC{Nw_9QLwK@P zS#v%qlWb){Wx;Ret=S2>J57i;7BKzF%DLjN=Fk7Rdy}S2X-(;`O`W32P6#vSRrcE5 zI*Cb6pkqy_?q^)GGXvKHuf-<2Wqo^EH*BPH;}*x=D_(Md&vT=*y|Jt-^DAzxWPyv5=?~p+Ne6PMfWT$V6T^DX>Cbb0;;ePqiWFD=&G}H3d z3?x*3d=WW)=~AiLh%iuZd^lIK!z(~dwBG6CbCR+F&;xOTIdueNInUu8VZp#po@8W9 z2AGAUI&9vPN+@=H@%-ljn>*uVZc~D-9|1Ee{Vz<~+f{&hrqIuv**Y&Tk2+bFjwO`7z@z|pY%?o7Ler8X=i zYX{fuke}=``o~NAdHtx7TLGPR89w~*&F#(H3U0Tcfc$N5S2Mr{DW^!nG|fu%HnMW8 z2(E=~seZeW%r_RK`guU2inN|Y5Q9UU03FLC>zqtarB4DhlB7>?`Zaks*&qsDnBT@+ z<{O<=Y@E~8%oll<>Rj4awyOU}*Stj&*1fr-(SGpq-}vH`kX?K9Xp~?xecn7Bc3W~k zoTyt(<+{2}woEMGJ)nQSOfPArrq+4jz&!+9YI3<9UQJEy1Z)I0Uf5_$Azoo!yfetl3NwW!Qp z45o1!3gJ62$Xu4?+qZ8`p7#_AsbRzNG#4u?u|sM?Oktm~Vl!pB%2wCeC}`)-ot;OI zK8B2JUtnNO(m3=>G3$!702yYVn{h*_HFfgj5~VgZPMMzj`sIE#9kva#ipMe*4=m5J zXCPA1UzrCZH@n9!6#WXxgYI#Q9VvDvvH053d+w{s4;GByI8L8Za~~Im2anz`u>EcT z|A&f%{rwkcdEfYL`Eq?+BbC7{t7l1{&Z3$^ayjz2XqBlcTWe~LpFLZX)!fVA~0T*DC*T|Nsma!JQcD=!?iCYzFkPGRl&Mw=hww!;}X|kPN*9oWg z0z0bnPQ>Nv7mn0&hC0n_J^NA%kf5^oYOPu|>D;^bUFBvhTDF0c9HF;Ki7UXaJ!=&C zy;3NxDWmWt8%p1F;V02T)m^q#?z?e+m7($yD-{~v2Om&-bslR&?S;|-Z>5UV`#g7n z`FhQo2Ao{zK(H2+TVQi#%Ue#6x4| z<}OBoRA6wJK}t2PUL=;ycAjyGU&L4m_|O&)9J--tl!apj!T>LyhFkdo~6 zt5TJCaAe&(21dGd@7}#3CL113*!yCmqNar%tc!gxpeRX7dXVD^ZX-vwb8NWFO{IS6 zq7W9uePL91ILHh%TaT_?^Zi#ockfi?Z?)-qE6bpY_LYgs9CwQc4pB*6T}K|*_uZOW zVDhfT<}iKVy3tw1>+3dLoqw^mXc%w~TbNtofgr3_sULUjoxU%$lnF4*)U1}&}s{u3uU*Cpil)z%#xmT{MS zQ3`StS$6Q!wQo-)7BInra1_{Ux-JE6c=Vv&z-su;=8e7U7Rp=Qx)M2nvy*vtK&xMW z&5L~(TtLoo8nBkhKKE_4t3E%%I@oV$=ahny^5}|@JG{!GRWCvGVCGX-M|X=)%es84 z1R*Anng?;#I^M%j%3k~*T25^s%E++U&h^}sb#pZvg=I`8l$|_zveuL6Rz7N(dCx$F z!Y^g(hx%dD%MRp?P2Bjvy`P4Lh729KG*3OpoXqio;$o$L4-A!st3KIZOH=cW@dVq1 z!V7w?-2n56v#X=C6vx@hU74dV%y2MOTR1?QV&e=rm9Y4H-(5N7gA+@$aR(p!#l7~o z2>W^{Gf|1ZYNMm`-Z|}8=c5J#J0y3QZFPX!3w(7Pza%wO!8N>gah(TUwO=HCb6x>6mJV`sT6L zEKOoW-Hyt<%~w(`r@jvK{;+mrAFJ?WAPRA`&?{%rIgBXWGR4XYb>JODcsk6QYujfw zSi55JW8oM;?y;X9Q}&;rR*F~CgQOCgxKv>I)9bR`HocSmZb_W8K1x z=lx(_%9gzPk8TSK0p+xe;U-Y8y+)U1yEX4Pd=FZgzc*E_Cm)&M={XXm!%3zB_Co(?3)Z`;> zDQTiiaw%v`8FhyB5x$N@6mipU>53N~{r%~zehXvvynH!N zRuTA9pzAnX)!FGG5Ao_jLszv2k}24sxA_Fgp$rjYw_ECto@XRPPok;e1{jud? z=6Bdqwn)Vvy*Je4mFiEhW%54~R}txihd1=F-}w-DpHICC2Zw%TI^}`PS)dUhin%OCJ%}TN{>R&%i3$%hYr6r@$>Zs!VskyDd;;@ zgfoCEl2U*d5)avmH;aO(hVFuf2sX;&VJWxbQ4GOfd34Z_m0AccPLTcyFAFuW=1Z>0 zl!N^yZ~3JWAk-jm!d$+Lz@S*LBe>jz?=7ED0+0ofRtU2|q;VB$KEiq&@lqH)qJq%R zL~Fa~EGZ_jF$a)+$dIU|cUvpa|%3c?P7`IEu(3GN{HBSZ~FhjL3|D*^> zdC3H_x@Y*Di+#X#kM(~(u9?cS294=V4#YIUn?!0Hoz)-n9>845UU1a?NtSy828d`D z)VvLhtR|{W*z&0)Rf5Y}Mz3C!4gd(=h#pRZN>gBxP}KZ(d@e1g+rI?AfEnG%C@Krg zbvpBgOejVLZNOT_BgsidiU8SoWQLU$CBoEymZzHzc6vF35NLibyidoLJ4A&l2xxWE zAwB}8TpQr%ADKgwf{WZ9sxKrPZvBsQ^Dc$zFS_;*1%LeEQSN_HtEuD8H90LBE1yS{ zq$V-{<|@3|pT>=M^C*FwF$k>|?FXw1EDTBxrYHcANUcklPzd4JJ9~AsfFaAXV=keq zIu9UXdNp=OT?_s+@n^!*NLyRvsuO;ee!=fHULp2MM6^6>-cHDs5+t5Y52f|MOjD*B zBy>k8*_S2$Y|uauoA9}j19CRJ>$K#`{FKqF}OWRB+mkUbSQ zpkGL9(xUx-N?(WpmVh&?iBD`RC=DaOOx3#JDF(oZ^$=yBOX-`*iiE0Xb8UTqm3*-_ z(V}abX$X47n7Lg7a3gQnKLaSKc)dVoJ{)PEU)%Ili_WUK9x&HZbMLWZ{RG_OtmOs7 z7GRhdml-+Pc=!V|D21e)kC{@+`tZvkgHvjTMzB|<541bl7vDMr=A%rcpHZ^m4|@tA%J)s)-Ql2=Yc zrG@6_vFG3Ev2KE{;}Ep4bxr)3x^Z1~RMMuaRGKABkMbdQRjLB1`|2uwq-3s*U1&!( zA4<9sO7N{MdT;XeKmiEZx1tx*Y4S?39q=r|de*LvBc3Sgg2!%}Klt~jljLAvWQ)|g z$mh^briI3|HK(nuZa}ZB=WoGU1;&)KgIL=fmiT#H#Luq`kswY<`Uco?Ar9mqvju`3 zf#+*<=+GCR+6!FFfHJW-NyYvSU?Y17BZO%}YBdmeS1c6{s)eu&xYjP%r{IHfEW{Fw z4;}>Flx6@{;7f=b&V=yXMJ%c0W;27G#Pg;B(Fr4=VJ)Ge4S~~}RK_1Ta-`3Zp{x1; z)$~Bl+xMEgYCy!C3x`K|+GV3+Qg`LiQ! zUe}HOh-LBX)yrNAQPL~J&4J|+AM-iOrD*)~*vKbi(nb$?jO6=8-@=B8D~=_u2v7We zu&1*pCBt^=m+8;SrZwYedAqk5o)Zj{yxSt|)>5O2ux(Xmx3%AWyUAFiqX$wuc#n^K zQ57&%jpn%%b@Mi5bQ%;gSNV^za_x`%Nq(XFwJUCBE@{~Jt6}-WLp(IZAimq0#IJ9U zw*I~JuaeYJr5{{l9~XUhKej-*E;nn~sE(1Uxcp8RDTfo?3Pv>sY2gt?IquC9m1)t= z0AL=GZ39vZlE&)3sVR=LwX*s?eMs5yjEJ%$s%*!c=_MBL=ENJW@Jh{(>uF@$D^WS< z>!!U&Ycf>_X2JZAx?BYWMn$ilbLOzzoF8Jv%8Vt%q_ta=}zCB}P-krJrj$>_u(&CK!-l~m=PqTPO zsou0pb?TX~7OCzdkL$#j#CWCd*`SPAW?QICbHBLsb(zVGgtUArtn{qU_p%d9kGE0| zIUnbDbzY&-r$?{s5{)_!tGeLYuh*C3E6psCU&@+{ITpM7Ly1Rq@wfY{Mkv?qiOrc4 zziO`XN(hNn{JZ<^20HOwbT8XvB^IPEIP|)B)1F0w;kB%AeAFtj;DMK-@|A7k<=<4B z=2S$Letz^Srqz)nAA)X{C3t<94Qd;Eon*vQCJyg_lAh8 z7?7jNdXZXIMk9o0LQY6UGFV^Kk3Buyf()7_8O%&nsmjNW3(Kgm^%&HifoY=>LkvR4 z=9st1?BCa)>(OW(-wt337NML$ri0{6@*j_H=@aYr3~A_mTSvJuXwcqrqX*^p=G!_9 z2^e5B(09;j0tbQ61vbSkUqaB5goXh7t}zrH$z(s$jZ;mG4H6KoU{CzzcY z*5**;82@OmvQ4c5hP64YQdQMXDBQH^`^-XBe$__BkDBful${R+Po9Z?@tbSA=|JyU z+h!N^;x=6?)M)2}r^XU=RgCIFYt|!B1!D6AQ zIvz?hn=+;8xE(FekVN7_Un%#}p|XEbMf+;uywL*?Y_<|o@q*IkM=|^k>B_gT@J{?6 z4AE#kuP^nP9ZHSyBz}V%1&B-BYs66AeB%yQR^;OlLWg;wQa}ZI-Zn9 zR#KoT(_IjWO(Lwqeo^qwiI{goWIgIzsWBy^9J%)Wb)X3K9L*S#l+z?B-#$L`qXI^T zq4fINf_HL+7$pytAO%tii13!8ei?ZuVe&Y9e#SY=ZZZ*(G)VMLFi+CH8=d3nN4ah7 z&ovIky?ssD2q``oi`a;&BiZhfOb?cHLnLZUc|?Lo(9Z}pYbMWPeWc2HG^R|z4h(bX z>g-7ret;9?jzay;|7ZCPqzWQXg0q(%KHT0D{2AZ!LRR~}<6(Se@ybU>mnWd&+ER1s}AR1FS%QSPiXwZ{(L!ESFMSMda z6PMc$`CT$A!P-pK*ntT!i!^YI0>2D=8}ltPknW}Z+nsNtD@MxXjc^~_8hwJUsImA# z%)H4TRB1+_A_om@rHqfI!-V!e%IGlygpkufgpgJVnJ5AbYMDQw^aCiK)d7$|6@tcY z8tIu3jLDVj4Xj7%ivxinr`twU&p=Pf1tl{`0YJP&ta1y441&=fMM6EnIS^lT*|wN^ zM$8bp{|ikD0K9x84D?sh(Ta&n5Troc>yi>c<{l)w1C1Aj4+uVI2*$uAwTwHq?)~L; z>Mt@|9A*=U9hA-Um=zCVM1zC&af?)}@&Q0UtctWwTzEFc+`Ks(+r`juFZ?47<%N3V zm*>Qf;0)SBYFb|+b!;2RvdaoAeB5w52dOLbJa1b6JYeN?7Qc#cf?(VkWP?%t;Y z^F}-;N;ozX-CBFZm}zgjLgL}W20A|M2r!pQsvHXhDu)T*-~gvf|3wHRQ!lT|8cJKx zEua+E8u6Rm(4*2)1CGYJXjoZkn2OL_PCcha!*s@fz(C0MyYJIap)qr>p0n@U^ncAa zR9|#tgI8zMBgX5cd{}D)jcw!kp@(3FRJ-I8f}PUzENm*N<#wCMFmc=L4EbRx=_v6c zhH2R#ttS|;i-YdO?jw37?uyrc|9&}{=tGR4?(rYa8E0FF_zp1i>BR*vj8lH_J=PX6 zqOm~}SHv7xxWG9AZUY;IlETxuf+Lnu+}Q7F8m8d=W?Q|*D?tETo}bxc?Z{51YFx;2 z*X_}m9gr>XC+q{?eT6b{3?6SO2UbzOnQhJ7t-h7w?|@)2B<=&(f0_pzk0%J_t0O{^ z8O!ApmqN1N$8(&gU1;QSe?eB9b4H`$HpKzJly{}Y09z|z%=hC<_7k}pA&qUW4@4oF zx>GnJ`iH;!yUq;DkQzzU-qZw)nQq8osRv*(2z^uCrx5x8F0q$*ITPj-Q*I9ykR|Kt zZpYvaf3j#)w4ZI~Q}x|PGbL3)-Pe|SW6goD<>2AQVLhbdJ%gG_YJS2lGdMR?8FUf7DmpAcxy?WTYMa&z`mNjZwk^z+p2(uWM7aDowr@jTl0n5H$BG1zRvYBG0Mgx zuTf&v=TRfqf7%(UFDhHma*>~k?rN0pX~pqRk`ZD9E1ZahJ;DfkgY4fIvP33q^ z!MD_8OyRuW;ll}%AoU%)NXyYl;8E^{@n?HZy(oe-3d7z+ZcC~V<@$Dt?uIuSw7T%y z`o5+M7amhQ9Tmm1Mc11h>$ZZjSkeC*&pbSE$uC$@sj5T!_EP}w!-vh;J9d^+cjZP? zHKfdl@=jA-lG*R)Js%tyVvp{yaDUY!vqC3&g`E(k9HQ{%m~1A^2=aT&oa96~B+@CKxoq8FJsF>ueG zKk|34YB&Q6g!af&Jer$mV4HXhmPHT<#p@aWEVtZTSK}`I(O^>Kgc0+v_=3U=RMbkV z+?(c#54OE%L+irUd6SWD|_YjhG!8pySbeQi_CJv@dZ?}7V6bR&Xo zfM<@+cH$pInRSONj3Ri;_(=Jh~@q#FUleu8L?j-K}heOokcAc`2o8C(Lg zi*Lv|+L^xmG;yZm@HKys7Q0rIF8ifH1BpM#AeP8=RXjvO4tdRG+9M>{LquqJ^Z_pm z#Ab$uo{Kk1dhI5mU^C^!3*gTJpmq@4p6W!SW5<431y7PJ9L5Bm?uV$mrqShqj1S#M zjA&fXAOBtI|fR516FA;Yngcp|x>qY$|i2^bwSkdUwjNx!58_6kt^9>LWI>kEz!Ij`T8 zZ&+IjKTIYKO#)0qvL{_*0|vC@Z6TkDs+2{%4$rMU(@a!e`ZH({m}Fsb+aXE=#R{Jw zR;cB-oy@Dj43M}{_a@N-&06q|>{zZ|x5ka?NPZy+Dhy~!!X?8=0gSNP)ScTrH zF4x<@dfM#S`|ERIS2#IPfZ z8~|l{H#ux*-xymWdvSOz_cknZ^BuN2onOTdJnYnI{Jw7kB? 0: - INSERTION_SORT(buckets[i]) - - // Объединяем блоки - k = 0 - for i = 0 to n-1: - for j = 0 to LENGTH(buckets[i]) - 1: - A[k] = buckets[i][j] - k = k + 1 - - return A - -function INSERTION_SORT(A[0..n-1]): - for i = 1 to n-1: - key = A[i] + ДЛЯ КАЖДОГО элемента В A: + индекс_блока = (элемент - min_значение) // размер_блока + добавить элемент в блоки[индекс_блока] + + // Сортируем каждый блок и объединяем + результат = пустой_массив + ДЛЯ КАЖДОГО блока В блоки: + отсортированный_блок = СортировкаВставками(блок) + добавить отсортированный_блок в результат + + ВОЗВРАТ результат + +АЛГОРИТМ СортировкаВставками(массив A): + ВХОД: массив A[0..n-1] + ВЫХОД: отсортированный массив A + + ДЛЯ i ОТ 1 ДО длина(A) - 1: + ключ = A[i] j = i - 1 - while j ≥ 0 and A[j] > key: - A[j+1] = A[j] + + // Сдвигаем элементы большие ключа + ПОКА j >= 0 И A[j] > ключ: + A[j + 1] = A[j] j = j - 1 - A[j+1] = key + + A[j + 1] = ключ + + ВОЗВРАТ A ## **Задание 5** @@ -243,9 +258,9 @@ function INSERTION_SORT(A[0..n-1]): import time import random import matplotlib.pyplot as plt -import copy +import math -# Сортировка слиянием (Merge Sort) +# 1. Сортировка слиянием (Merge Sort) def merge_sort(arr): if len(arr) <= 1: return arr @@ -272,22 +287,47 @@ def merge(left, right): result.extend(right[j:]) return result -# Быстрая сортировка (Quick Sort) -def quick_sort(arr): - if len(arr) <= 1: +# 2. Блочная сортировка (Bucket Sort) +def bucket_sort(arr, bucket_size=5): + if len(arr) == 0: return arr - pivot = arr[len(arr) // 2] - left = [x for x in arr if x < pivot] - middle = [x for x in arr if x == pivot] - right = [x for x in arr if x > pivot] + # Находим минимальное и максимальное значения + min_val = min(arr) + max_val = max(arr) + + # Создаем блоки + bucket_count = (max_val - min_val) // bucket_size + 1 + buckets = [[] for _ in range(bucket_count)] + + # Распределяем элементы по блокам + for num in arr: + bucket_index = (num - min_val) // bucket_size + buckets[bucket_index].append(num) + + # Сортируем каждый блок и объединяем + result = [] + for bucket in buckets: + # Используем сортировку вставками для сортировки блоков + result.extend(insertion_sort(bucket)) - return quick_sort(left) + middle + quick_sort(right) + return result + +def insertion_sort(arr): + for i in range(1, len(arr)): + key = arr[i] + j = i - 1 + while j >= 0 and arr[j] > key: + arr[j + 1] = arr[j] + j -= 1 + arr[j + 1] = key + return arr # Функция для измерения времени выполнения -def measure_sorting_time(sort_func, arr): +def measure_sorting_time(sort_func, arr, *args): + arr_copy = arr.copy() start_time = time.time() - sort_func(arr.copy()) + sort_func(arr_copy, *args) end_time = time.time() return end_time - start_time @@ -306,8 +346,8 @@ def test_sorting_algorithms(): sizes = [1000, 5000, 10000, 100000] # n1, n2, n3, n4 array_types = ['sorted', 'reverse_sorted', 'random'] algorithms = { - 'Сортировка слиянием': merge_sort, - 'Быстрая сортировка': quick_sort + 'Сортировка слиянием': (merge_sort, []), + 'Блочная сортировка': (bucket_sort, [10]) # bucket_size = 10 } results = {algo: {arr_type: [] for arr_type in array_types} for algo in algorithms} @@ -319,8 +359,8 @@ def test_sorting_algorithms(): test_array = generate_test_arrays(size, arr_type) print(f"\nТип массива: {arr_type}") - for algo_name, algo_func in algorithms.items(): - time_taken = measure_sorting_time(algo_func, test_array) + for algo_name, (algo_func, args) in algorithms.items(): + time_taken = measure_sorting_time(algo_func, test_array, *args) results[algo_name][arr_type].append(time_taken) print(f"{algo_name}: {time_taken:.4f} секунд") @@ -345,6 +385,7 @@ def plot_results(results, sizes): axes[i].grid(True) plt.tight_layout() + plt.savefig('sorting_comparison.png') plt.show() # Ручная трассировка для небольших массивов @@ -352,16 +393,32 @@ def manual_trace(): print("=== РУЧНАЯ ТРАССИРОВКА ===") # Тестовый массив - test_array = [64, 34, 25, 12, 22, 11, 90] + test_array = [64, 34, 25, 12, 22, 11, 90, 5] print(f"Исходный массив: {test_array}") # Сортировка слиянием + print("\n--- Сортировка слиянием ---") sorted_merge = merge_sort(test_array.copy()) - print(f"Сортировка слиянием: {sorted_merge}") + print(f"Результат: {sorted_merge}") - # Быстрая сортировка - sorted_quick = quick_sort(test_array.copy()) - print(f"Быстрая сортировка: {sorted_quick}") + # Блочная сортировка + print("\n--- Блочная сортировка ---") + sorted_bucket = bucket_sort(test_array.copy(), 20) + print(f"Результат: {sorted_bucket}") + +# Анализ эффективности +def analyze_efficiency(results, sizes): + print("\n=== АНАЛИЗ ЭФФЕКТИВНОСТИ ===") + for size in sizes: + print(f"\nДля n = {size}:") + for arr_type in ['sorted', 'reverse_sorted', 'random']: + merge_time = results['Сортировка слиянием'][arr_type][sizes.index(size)] + bucket_time = results['Блочная сортировка'][arr_type][sizes.index(size)] + + faster = "Слиянием" if merge_time < bucket_time else "Блочная" + difference = abs(merge_time - bucket_time) + + print(f" {arr_type}: {faster} быстрее на {difference:.4f} сек") # Запуск тестирования if __name__ == "__main__": @@ -376,73 +433,123 @@ if __name__ == "__main__": plot_results(results, sizes) # Анализ эффективности - print("\n=== АНАЛИЗ ЭФФЕКТИВНОСТИ ===") - for size in sizes: - print(f"\nДля n = {size}:") - for arr_type in ['sorted', 'reverse_sorted', 'random']: - merge_time = results['Сортировка слиянием'][arr_type][sizes.index(size)] - quick_time = results['Быстрая сортировка'][arr_type][sizes.index(size)] - - faster = "Слиянием" if merge_time < quick_time else "Быстрая" - difference = abs(merge_time - quick_time) - - print(f" {arr_type}: {faster} быстрее на {difference:.4f} сек") + analyze_efficiency(results, sizes) ``` -![png](Lab_02_files.png/Lab_02_diagr.png) +![png](Lab_02_files.png/diagr.png) ## **Ручная трассировка алгоритмов** -### Сортировка слиянием для массива [64, 34, 25, 12, 22, 11, 90]: +### Сортировка слиянием для массива [64, 34, 25, 12, 22, 11, 90, 5]: Разделение: -[64, 34, 25] и [12, 22, 11, 90] -[64] [34, 25] и [12, 22] [11, 90] -[64] [34] [25] и [12] [22] [11] [90] +[64, 34, 25, 12] и [22, 11, 90, 5] +[64, 34] и [25, 12] | [22, 11] и [90, 5] +[64] [34] [25] [12] [22] [11] [90] [5] Слияние: -[34, 64] + [25] → [25, 34, 64] -[12, 22] + [11, 90] → [11, 12, 22, 90] -[25, 34, 64] + [11, 12, 22, 90] → [11, 12, 22, 25, 34, 64, 90] +[34, 64] + [12, 25] → [12, 25, 34, 64] +[11, 22] + [5, 90] → [5, 11, 22, 90] +[12, 25, 34, 64] + [5, 11, 22, 90] → [5, 11, 12, 22, 25, 34, 64, 90] -### Быстрая сортировка для массива [64, 34, 25, 12, 22, 11, 90]: +### Блочная сортировка для массива [64, 34, 25, 12, 22, 11, 90, 5] (bucket_size=20): -Опорный элемент: 12 -Меньшие: [] | Равные: [12] | Большие: [64, 34, 25, 22, 11, 90] +Диапазон значений: min=5, max=90 +Количество блоков: (90-5)//20 + 1 = 5 блоков -Рекурсия для больших: -Опорный: 25 -Меньшие: [22, 11] | Равные: [25] | Большие: [64, 34, 90] +Распределение по блокам: +Блок 0 [5-24]: [12, 22, 11, 5] +Блок 1 [25-44]: [34, 25] +Блок 2 [45-64]: [64] +Блок 3 [65-84]: [] +Блок 4 [85-104]: [90] -И т.д. до полной сортировки +Сортировка блоков: +Блок 0: [5, 11, 12, 22] +Блок 1: [25, 34] +Блок 2: [64] +Блок 3: [] +Блок 4: [90] +Объединение: [5, 11, 12, 22, 25, 34, 64, 90] -## **Анализ эффективности** +## **Анализ эффективности** + ### **Критерии сравнения:** #### 1.Временная сложность: +##### Сортировка слиянием (Merge Sort): + + +Лучший случай: O(n log n) +Средний случай: O(n log n) +Худший случай: O(n log n) +Обоснование: + +Алгоритм всегда делит массив пополам: log n уровней рекурсии + +На каждом уровне выполняется слияние за O(n) + +Итого: O(n) × O(log n) = O(n log n) -Сортировка слиянием: O(n log n) в худшем, среднем и лучшем случаях +##### Блочная сортировка (Bucket Sort): -Быстрая сортировка: O(n log n) в среднем, O(n²) в худшем случае +Лучший случай: O(n + k) +Средний случай: O(n + k) +Худший случай: O(n²) +Обоснование: + +Лучший случай: равномерное распределение, все блоки содержат ≈ n/k элементов + +Худший случай: все элементы попадают в один блок → вырождается в O(n²) + +k - количество блоков #### 2.Память: -Сортировка слиянием: O(n) дополнительной памяти +##### Сортировка слиянием: + +Требуемая память: O(n) +Распределение памяти: + +Дополнительный массив для слияния: O(n) + +Стек вызовов рекурсии: O(log n) + +Итого: O(n) + +##### Блочная сортировка: -Быстрая сортировка: O(log n) дополнительной памяти в среднем случае +Требуемая память: O(n + k) +Распределение памяти: + +Массив блоков: O(k) + +Элементы в блоках: O(n) + +Итого: O(n + k) #### 3.Устойчивость: -Сортировка слиянием: устойчивая +##### Сортировка слиянием:устойчивая + +Сохраняет относительный порядок равных элементов + +Элементы из левого подмассива добавляются первыми + +##### Блочная сортировка : ЗАВИСИТ от алгоритма сортировки блоков +Варианты: + +Устойчивая: если использовать устойчивую сортировку блоков (сортировку вставками) -Быстрая сортировка: неустойчивая +Неустойчивая: если использовать неустойчивую сортировку блоков + ```python diff --git a/labs/lab_02/sorting_comparison.png b/labs/lab_02/sorting_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..28fff8558a143777c32633ba0d76f7160c9dd0ca GIT binary patch literal 77877 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%0AHA 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 Date: Mon, 6 Oct 2025 12:50:20 +0300 Subject: [PATCH 11/19] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab_02/Lab_02_files.png/buc_sort.png | Bin 0 -> 59620 bytes labs/lab_02/Lab_02_files.png/sliya_sort.png | Bin 0 -> 70445 bytes labs/lab_02/praktika.md | 368 +++++++++++++++++++- 3 files changed, 363 insertions(+), 5 deletions(-) create mode 100644 labs/lab_02/Lab_02_files.png/buc_sort.png create mode 100644 labs/lab_02/Lab_02_files.png/sliya_sort.png diff --git a/labs/lab_02/Lab_02_files.png/buc_sort.png b/labs/lab_02/Lab_02_files.png/buc_sort.png new file mode 100644 index 0000000000000000000000000000000000000000..6e819ef7d37a3d77c5e0931ce4dfcc5bbfdf135c GIT binary patch literal 59620 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