🐍 *args | **kwargs — Важны звёздочки, а не имена!
🗣 В Python распаковку аргументов делают операторы * и **. А
🌟 Что делают звёздочки:
* — собирает все переданные позиционные аргументы в кортеж.
** — собирает все переданные именованные аргументы (ключ=значение) в словарь.
✅ Можно писать так, и работать будет одинаково:
💡Вывод:
📌Звёздочки — это настоящие операторы, а имена вроде
📌Эти операторы необходимы для более гибкого приема аргументов, когда заранее не известно сколько их будет.
🖥 Больше информации о args и kwargs можно прочесть тут:
https://sky.pro/wiki/python/rabota-s-argumentami-v-python-args-i-kwargs/
t.me/IT_Python_ZheglY | #articles #python
🗣 В Python распаковку аргументов делают операторы * и **. А
args
, kwargs
— это просто соглашения по имени, ты можешь называть их как угодно!🌟 Что делают звёздочки:
* — собирает все переданные позиционные аргументы в кортеж.
** — собирает все переданные именованные аргументы (ключ=значение) в словарь.
✅ Можно писать так, и работать будет одинаково:
def func(*args, kwargs):
pass
def func(*anything, **hello):
pass
💡Вывод:
📌Звёздочки — это настоящие операторы, а имена вроде
args
и kwargs
— просто соглашение ради читаемости.📌Эти операторы необходимы для более гибкого приема аргументов, когда заранее не известно сколько их будет.
🖥 Больше информации о args и kwargs можно прочесть тут:
https://sky.pro/wiki/python/rabota-s-argumentami-v-python-args-i-kwargs/
t.me/IT_Python_ZheglY | #articles #python
🔥3👍2
🔥Задача с LeetCode #344: Reverse String
Необходимо развернуть список символов in-place, т.е. без создания нового списка.
Input: ["n","e","e","t"]
Output: ["t","e","e","n"]
💡Идея решения:
• Создаём два указателя — left в начале, right в конце.
• Пока они не встретятся, меняем местами s[left] и s[right].
• После каждой замены сдвигаем указатели навстречу друг другу.
💡Альтернативное решение:
🖥 Подробное видео решение можно посмотреть здесь👇
https://neetcode.io/solutions/reverse-string
@IT_Python_ZheglY | #leetcode #python
Необходимо развернуть список символов in-place, т.е. без создания нового списка.
Input: ["n","e","e","t"]
Output: ["t","e","e","n"]
💡Идея решения:
• Создаём два указателя — left в начале, right в конце.
• Пока они не встретятся, меняем местами s[left] и s[right].
• После каждой замены сдвигаем указатели навстречу друг другу.
💡Альтернативное решение:
def reverseString(s):
s.reverse()
🖥 Подробное видео решение можно посмотреть здесь👇
https://neetcode.io/solutions/reverse-string
@IT_Python_ZheglY | #leetcode #python
❤4
💡 Что такое оценка алгоритма и зачем она нужна?
Оценка алгоритма — это способ понять, насколько эффективно работает код: по времени выполнения и объёму используемой памяти.
⏱️ Временная сложность (Time Complexity) — показывает, как изменяется время выполнения алгоритма при росте объёма данных. Ниже — от лучших к худшим:
✅ O(1) — константное время. Алгоритм работает одинаково быстро при любом размере входа.
Пример: доступ к элементу массива по индексу
✅ O(log n) — логарифмическая сложность. Алгоритм быстро сужает область поиска.
Пример: бинарный поиск в отсортированном массиве
✅ O(n) — линейная сложность. Время растёт пропорционально числу элементов.
Пример: пройтись по массиву и найти максимум
✅ O(n log n) — эффективно масштабируется, часто встречается в быстрых сортировках.
Пример: Merge Sort, Heap Sort
⚠️ Сложности, которых стоит избегать:
🚫 O(n²) — квадратичная сложность, характерна для вложенных циклов.
Пример: пузырьковая сортировка, сравнение всех пар
🚫 O(n³) — кубическая сложность, обычно три вложенных цикла.
Пример: наивное перемножение матриц
🚫 O(2ⁿ) — экспоненциальная. Время выполнения удваивается с каждым шагом.
Пример: рекурсивный подсчёт чисел Фибоначчи
🚫 O(n!) — факториальная. Перебираются все возможные варианты.
Пример: задача коммивояжёра, генерация всех перестановок
Прочесть более подробно о Big O можно здесь: 👇
https://habr.com/ru/articles/782608/
@IT_Python_ZheglY | #python
Оценка алгоритма — это способ понять, насколько эффективно работает код: по времени выполнения и объёму используемой памяти.
⏱️ Временная сложность (Time Complexity) — показывает, как изменяется время выполнения алгоритма при росте объёма данных. Ниже — от лучших к худшим:
✅ O(1) — константное время. Алгоритм работает одинаково быстро при любом размере входа.
Пример: доступ к элементу массива по индексу
✅ O(log n) — логарифмическая сложность. Алгоритм быстро сужает область поиска.
Пример: бинарный поиск в отсортированном массиве
✅ O(n) — линейная сложность. Время растёт пропорционально числу элементов.
Пример: пройтись по массиву и найти максимум
✅ O(n log n) — эффективно масштабируется, часто встречается в быстрых сортировках.
Пример: Merge Sort, Heap Sort
⚠️ Сложности, которых стоит избегать:
🚫 O(n²) — квадратичная сложность, характерна для вложенных циклов.
Пример: пузырьковая сортировка, сравнение всех пар
🚫 O(n³) — кубическая сложность, обычно три вложенных цикла.
Пример: наивное перемножение матриц
🚫 O(2ⁿ) — экспоненциальная. Время выполнения удваивается с каждым шагом.
Пример: рекурсивный подсчёт чисел Фибоначчи
🚫 O(n!) — факториальная. Перебираются все возможные варианты.
Пример: задача коммивояжёра, генерация всех перестановок
Прочесть более подробно о Big O можно здесь: 👇
https://habr.com/ru/articles/782608/
@IT_Python_ZheglY | #python
Хабр
Сложность алгоритмов. Разбор Big O
Сложность алгоритмов - это ключевой аспект при проектировании и создании веб-приложений, особенно при работе с большим объемом данных или выполнении вычислительно сложных операций. Понимание, как...
👏9🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
🫧 Принцип сортировки пузырьком (Bubble Sort)
🔜 Сортировка пузырьком — это простой алгоритм сортировки, который многократно проходит по списку, сравнивая пары соседних элементов и меняя их местами, если они идут в неправильном порядке. Таким образом, большие элементы "всплывают" в конец списка, как пузырьки в воде.
📌 Подходит для:
🔵 учебных и демонстрационных целей.
🗣️ Алгоритм стабилен и легко понимается, но медленный (O(n²)) — применяется в основном для обучения.
🔵 Средняя O(n²)
🔵 Худшая O(n²)
🔵 Память O(1) — работает на месте
@IT_Python_ZheglY | #Сортировки #Python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False # Флаг для оптимизации
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
data = [5, 1, 4, 2, 8]
bubble_sort(data)
@IT_Python_ZheglY | #Сортировки #Python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👏11👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Radix Sort — это нестандартный, но очень мощный алгоритм сортировки. В отличие от большинства алгоритмов, он не использует сравнение элементов. Вместо этого сортирует числа поразрядно: от младшего разряда к старшему (или наоборот).
@IT_Python_ZheglY | #Сортировки #python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👏7👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🚫Минусы:
def counting_sort(arr):
max_val = max(arr)
count = [0] * (max_val + 1)
for num in arr:
count[num] += 1
index = 0
for i in range(len(count)):
while count[i] > 0:
arr[index] = i
index += 1
count[i] -= 1
@IT_Python_ZheglY | #сортировки| #python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21🔥9🥰6👏2💯2🤮1
🔥Задача с LeetCode #647: Palindromic Substrings
🔜 Требуется подсчитать количество палиндромных подстрок в заданной строке.
Палиндром - это строка, которая читается одинаково как слева направо, так и справа налево.
Input: s = "aaa"
Output: 6
Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa"
💡 Идея решения:
Алгоритм основан на идее, что каждый палиндром в строке имеет центр (или два центра для палиндромов четной длины). Он проходит по всем возможным центрам и "расширяется" в обе стороны, проверяя, образуется ли палиндром.
🔵 В нечетных палиндромах каждый символ рассматриваем как центр
🔵 В четных палиндромах каждую пару соседних символов рассматриваем как центр
🖥 Подробное видео решение можно посмотреть здесь
@IT_Python_ZheglY | #leetcode #python
Палиндром - это строка, которая читается одинаково как слева направо, так и справа налево.
Input: s = "aaa"
Output: 6
Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa"
Алгоритм основан на идее, что каждый палиндром в строке имеет центр (или два центра для палиндромов четной длины). Он проходит по всем возможным центрам и "расширяется" в обе стороны, проверяя, образуется ли палиндром.
@IT_Python_ZheglY | #leetcode #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9❤8🍓2🤮1💋1
🔥Задача с Leetcode #206: Reverse Linked List
🔜 Дана голова односвязного списка. Нужно развернуть список и вернуть новую голову.
Исходный список: 1 -> 2 -> 3 -> 4 -> 5
Развёрнутый: 5 -> 4 -> 3 -> 2 -> 1
🔖 Разбор кода:
🔵 prev (previous) - Хранит предыдущий узел, который станет следующим при развороте.
🔵 curr (current) - Текущий узел, который мы обрабатываем.
🔵 next_node - Временное хранилище для следующего узла перед разворотом
💡 Идея алгоритма:
🔵 Сохраняем next_node — чтобы не потерять следующий узел после изменения ссылки.
🔵 Разворачиваем ссылку —
🔵 Сдвигаем указатели — двигаем prev и curr вперёд.
🖥 Подробное решение можно посмотреть здесь
🧑💻 @IT_Python_ZheglY | #leetcode #python
Исходный список: 1 -> 2 -> 3 -> 4 -> 5
Развёрнутый: 5 -> 4 -> 3 -> 2 -> 1
curr.next
теперь указывает на prev.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍7👏5🔥1🤮1🍓1
Все о "подводных камнях" в ООП рассказывают опытные разработчики в этом подкасте
#Python #подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👏8👍3🤮1🍓1🍾1
HTTP-коды ответов (Status Codes) — это трехзначные числа, которые сервер отправляет клиенту для информирования о результате обработки запроса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤8👏8🔥2💩2🍾1
HTTP-коды состояния 400 (Client Error) и 500 (Server Error) — это две основные категории ошибок, которые указывают на проблемы при обработке запроса. Вот их ключевые различия и особенности:
● 400 Bad Request Сервер не понял запрос из-за синтаксической ошибки
● 401 Unauthorized Требуется аутентификация
● 403 Forbidden Доступ запрещён
● 404 Not Found Сервер не нашёл запрашиваемый ресурс
● 405 Method Not Allowed Используется неподдерживаемый HTTP-метод
● 500 Internal Server Error — Общая ошибка сервера
● 502 Bad Gateway — Проблема с прокси-сервером или API
● 503 Service Unavailable — Сервер временно недоступен.
1. Полный список кодов с пояснениями от Mozilla
2. QaRocks
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🍓5👏4🦄4💩2❤1🍾1
🌳 Основные деревья в Python и их применение
🗣️ Деревья — иерархические структуры данных, где каждый узел (нода) имеет родителя (кроме корня) и потомков. Используются для представления файловых систем, иерархий данных, оптимизации поиска и сортировки. В Python нет встроенных деревьев, но их реализуют через классы или библиотеки (например, bigtree).
🔵 Красно-черное — Самобалансирующееся BST. Основа словарей Python, СУБД.
🔵 B+ -дерево — Оптимизировано для дисковых операций. Стандарт для индексов баз данных.
🔵 Бинарная куча — Min/Max-куча для приоритетных очередей. Основа для алгоритма Дейкстры.
🔵 AVL-дерево — Строго сбалансированное BST. Для систем с гарантированным временем поиска.
🔵 Trie (Префиксное) — Хранит строки как цепочки символов. Для автодополнения и словарей.
🔵 B-дерево — Многопутевое дерево для файловых систем. Оптимизация чтения/записи блоков.
🔵 BST (Бинарное) — Базовое дерево поиска и понимания устройства | Учебные проекты.
🔵 Общее дерево — Узлы с произвольным числом потомков. Для XML/JSON и иерархий.
📚 Дополнительные материалы для прочтения:
базовые знание деревьев sky.pro
кратко об обходах и построениях
🔜 Далее мы вместе подробнее изучим каждое дерево и разберем код их построения!
🧑💻 @IT_Python_ZheglY | #python
базовые знание деревьев sky.pro
кратко об обходах и построениях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🤮1
🌳 Основные деревья в Python |Красно-чёрное дерево (КЧД)
🗣️ Красно-чёрное дерево (КЧД) — это умная структура данных, которая автоматически балансируется при добавлении или удалении элементов. Благодаря этому операции поиска, вставки и удаления работают за O(log n) — быстро даже для больших данных!
🔖 Основные правила:
🔵 Цвета — каждый узел красный или чёрный.
🔵 Корень и листья — всегда чёрные (листья — это пустые узлы NIL).
🔵 Красные узлы — не могут быть родителями красных (нет двух красных подряд).
🔵 Чёрная высота — на всех путях от корня до листьев одинаковое число чёрных узлов.
❔ Как оно балансируется?
Если после вставки нарушаются правила, дерево перекрашивает узлы и делает повороты (влево/вправо).
Например, если два красных узла оказались рядом, один перекрашивается в чёрный.
💡 Зачем это нужно?
КЧД используется в базах данных, языковых библиотеках и везде, где важен быстрый поиск и динамическое обновление.
📚 Дополнительные материалы для прочтения:
Основные знания Tproger
Код реализации можно посмотреть здесь: https://github.com/ersul4ik/rbt
🧑💻 @IT_Python_ZheglY | #python #деревья
Если после вставки нарушаются правила, дерево перекрашивает узлы и делает повороты (влево/вправо).
Например, если два красных узла оказались рядом, один перекрашивается в чёрный.
💡 Зачем это нужно?
КЧД используется в базах данных, языковых библиотеках и везде, где важен быстрый поиск и динамическое обновление.
Основные знания Tproger
Код реализации можно посмотреть здесь: https://github.com/ersul4ik/rbt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤10🤮1
🌳 Основные деревья в Python | Бинарная куча
Бинарная куча — это специальная древовидная структура данных, которая удовлетворяет свойству кучи
🔵 Min-куча: каждый родительский элемент меньше или равен своим дочерним элементам
🔵 Max-куча: каждый родительский элемент больше или равен своим дочерним элементам.
Это позволяет эффективно добавлять и извлекать элементы с наивысшим приоритетом, используя алгоритмическое время O(log n).
🔜 В Python для работы с бинарными кучами используется встроенный модуль heapq, который реализует алгоритм очереди с приоритетами.
📚 Дополнительные материалы для прочтения:
Официальная документация Python
🧑💻 @IT_Python_ZheglY | #python #деревья
Бинарная куча — это специальная древовидная структура данных, которая удовлетворяет свойству кучи
Это позволяет эффективно добавлять и извлекать элементы с наивысшим приоритетом, используя алгоритмическое время O(log n).
📚 Дополнительные материалы для прочтения:
Официальная документация Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10❤6🥰2🤡1
🌳 Основные деревья в Python | B+ дерево ( B+ tree )
Вы когда-нибудь задумывались, как базы данных мгновенно находят нужные записи среди огромного количества данных? Всё дело в эффективной структуре данных — B+ дереве.
🔖 Основные особенности дерева:
🔵 Все данные — в листьях. Внутренние узлы выступают лишь как «указатели» или «оглавление», что делает поиск по диапазону невероятно быстрым (например, «найти всех пользователей с 10 по 100»).
🔵 Листья связаны в список. Это позволяет легко и быстро обходить все данные в отсортированном порядке.
🔵 Высота дерева минимальна. Благодаря этому для поиска любой зап
🔜 Где используется? Практически везде! Это основа индексов в MySQL, PostgreSQL, MongoDB и многих других СУБД. Именно B+-дерево позволяет им работать быстро и стабильно.
📚 Дополнительные материалы для прочтения:
Базовые знания habr.com
Реализация дерева GitHub
🧑💻 @IT_Python_ZheglY | #python #деревья
Вы когда-нибудь задумывались, как базы данных мгновенно находят нужные записи среди огромного количества данных? Всё дело в эффективной структуре данных — B+ дереве.
📚 Дополнительные материалы для прочтения:
Базовые знания habr.com
Реализация дерева GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4👏4🤮1
⚖️ Что такое балансировка дерева?
Балансировка — это процесс поддержания дерева в «стройной» форме, чтобы не было очень длинных веток и очень коротких.
Зачем это нужно? Балансировка гарантирует, что высота дерева остаётся логарифмической по отношению к числу элементов, а значит, операции поиска, вставки и удаления будут выполняться за O(log n) — то есть, очень быстро.
🔖 Основные виды балансировки:
1. Балансировка поворотами |AVL-деревья
🔵 Следят за идеальным балансом
🔵 После каждого изменения проверяют разницу высот веток
🔵 Если разница > 1 — делают повороты для выравнивания
🔵 Идеально для частого поиска
❗️ Много поворотов замедляет добавление/удаление
2. Балансировка разделкнием и слиянием | B-деревья и B+-деревья
🔵 Хранят несколько ключей в одном узле
🔵 При переполнении делятся пополам
🔵 При опустошении объединяются с соседом
🔵 Идеальны для работы с диском и базами данных
❗️ Сложнее в реализации
3. Красно-чёрные деревья
🔵 Не гонятся за идеальным балансом
🔵 Следят за цветом узлов (красный/чёрный) по простым правилам
🔵 Быстрое добавление и удаление
❗️Поиск чуть медленнее, чем в AVL
📚 Дополнительные материалы для прочтения:
Информация по деревьям
Информация по балансировкам
🧑💻 @IT_Python_ZheglY | #python #деревья
Балансировка — это процесс поддержания дерева в «стройной» форме, чтобы не было очень длинных веток и очень коротких.
Зачем это нужно? Балансировка гарантирует, что высота дерева остаётся логарифмической по отношению к числу элементов, а значит, операции поиска, вставки и удаления будут выполняться за O(log n) — то есть, очень быстро.
1. Балансировка поворотами |AVL-деревья
❗️ Много поворотов замедляет добавление/удаление
2. Балансировка разделкнием и слиянием | B-деревья и B+-деревья
❗️ Сложнее в реализации
3. Красно-чёрные деревья
❗️Поиск чуть медленнее, чем в AVL
📚 Дополнительные материалы для прочтения:
Информация по деревьям
Информация по балансировкам
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2🤮2👏1
🔍 ОСНОВНЫЕ ОПЕРАЦИИ С ДАННЫМИ: ЧТЕНИЕ, ПОИСК, ВСТАВКА, УДАЛЕНИЕ
📖 ЧТЕНИЕ (Access) Доступ к данным по известному местоположению(индексу или ключу)
🔵 Массивы: O(1) — мгновенный доступ по формуле "адрес = начало + индекс × размер"
🔵 Связные списки: O(n) — требуется последовательный проход от начала
🔵 Хэш-таблицы: O(1) — вычисление хэша и мгновенный доступ к ячейке
🔵 Деревья: O(log n) — быстрый спуск по ветвям
🔜 Применение: загрузка профилей, отображение товаров, чтение конфигураций
🔍 ПОИСК (Search) Нахождение элемента по значению(а не по позиции)
🔵 Линейный поиск: O(n) — последовательная проверка всех элементов (долго)
🔵 Бинарный поиск: O(log n) — работает только с отсортированными данными
🔵 Хэш-таблицы: O(1) — идеально для поиска по ключу
🔵 Деревья: O(log n) — эффективный поиск в сбалансированных структурах
🔜 Применение: поиск пользователей, проверка авторизации, фильтрация данных
➕ ВСТАВКА (Insertion) Добавление новых элементов в структуру данных
🔵 Массивы: O(n) — требует сдвига элементов (кроме вставки в конец)
🔵 Связные списки: O(1) — быстрое изменение указателей
🔵 Хэш-таблицы: O(1) — вычисление позиции по хэшу и запись
🔵 Деревья: O(log n) — поиск места
и балансировка
🔜 Применение: регистрация
пользователей, добавление заказов, логирование
❌ УДАЛЕНИЕ (Deletion) Удаление элементов из структуры данных
🔵 Массивы: O(n) — требует сдвига всех последующих элементов
🔵 Связные списки: O(1) — быстрое перенаправление указателей
🔵 Хэш-таблицы: O(1) — пометка ячейки как удаленной
🔵 Деревья: O(log n) — удаление узла с последующей балансировкой
🔜 Применение: удаление аккаунтов, очистка кэша, отмена действий
📚 Дополнительные материалы для прочтения:
Основные структуры данных
🧑💻 @IT_Python_ZheglY | #python
#программирование #алгоритмы #данные #структурыданных
📖 ЧТЕНИЕ (Access) Доступ к данным по известному местоположению(индексу или ключу)
🔍 ПОИСК (Search) Нахождение элемента по значению(а не по позиции)
➕ ВСТАВКА (Insertion) Добавление новых элементов в структуру данных
и балансировка
пользователей, добавление заказов, логирование
❌ УДАЛЕНИЕ (Deletion) Удаление элементов из структуры данных
📚 Дополнительные материалы для прочтения:
Основные структуры данных
#программирование #алгоритмы #данные #структурыданных
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
🧠 Что такое энтропия Шеннона и как она измеряет хаос?
Представьте, что вы пытаетесь угадать, что скажет ваш друг. Если он всегда говорит «да» — это скучно и предсказуемо. Если он отвечает случайно — это хаос и неопределенность. Энтропия Шеннона — это число, которое точно измеряет эту самую неопределенность.
📉 Формула:
H = - Σ [p_i * log₂(p_i)]
Где:
H — энтропия (в битах).
p_i — вероятность каждого возможного события.
Σ — сумма по всем событиям.
———————————-————————————————————
Информационная энтропия подчиняется следующим закономерностям:
А) Энтропия события равна 0, если его вероятность равна 1 (100%);
Б) Энтропия двух независимых событий равна сумме энтропий этих событий;
В) Энтропия максимальна, если все события равновероятны.
Получается, чем сложнее предсказать исход события, тем больше информации оно несёт. Если событие редкое и непредсказуемое, мы называем его новостью и наделяем информационной ценностью. Если же оно повторяется часто и о нём постоянно рассказывают, его информационная ценность теряется.
———————————-————————————————————
🎲 Простой пример: Монетка
Честная монетка (орёл/решка по 50%).
Энтропия: H = - [0.5*log₂(0.5) + 0.5*log₂(0.5)] = 1 бит.
Максимальная неопределенность! Памяти на кодирование информации уйдет больше.
Нечестная монетка (орёл — 99%, решка — 1%).
Энтропия: H ≈ 0.08 бита.
Система предсказуема, неопределенность мала. Памяти на кодирование информации уйдет мало.
💡 Где это используется?
Энтропия — не просто теория, она везде в нашей цифровой жизни:
🔵 Сжатие данных (ZIP, RAR): Алгоритмы ищут избыточность (низкую энтропию) в данных и упаковывают их меньше.
🔵 Криптография: Случайные ключи должны иметь максимальную энтропию, чтобы их было невозможно угадать.
🔵 Машинное обучение: С помощью энтропии строят деревья решений, задавая вопросы, которые сильнее всего уменьшают неопределенность.
🔵 Связь: Помогает определить максимальную скорость передачи данных без ошибок через зашумленный канал.
Энтропия Шеннона — это фундаментальная мера хаоса и неопределенности, которая позволяет делать наши технологии эффективнее и умнее.
📚 Дополнительные материалы для прочтения:
Информация об информации. Энтропия Шеннона, демон Максвелла и предел Ландауэра
🧑💻 @IT_Python_ZheglY | #python
#программирование #данные
Представьте, что вы пытаетесь угадать, что скажет ваш друг. Если он всегда говорит «да» — это скучно и предсказуемо. Если он отвечает случайно — это хаос и неопределенность. Энтропия Шеннона — это число, которое точно измеряет эту самую неопределенность.
📉 Формула:
H = - Σ [p_i * log₂(p_i)]
Где:
H — энтропия (в битах).
p_i — вероятность каждого возможного события.
Σ — сумма по всем событиям.
———————————-————————————————————
Информационная энтропия подчиняется следующим закономерностям:
А) Энтропия события равна 0, если его вероятность равна 1 (100%);
Б) Энтропия двух независимых событий равна сумме энтропий этих событий;
В) Энтропия максимальна, если все события равновероятны.
Получается, чем сложнее предсказать исход события, тем больше информации оно несёт. Если событие редкое и непредсказуемое, мы называем его новостью и наделяем информационной ценностью. Если же оно повторяется часто и о нём постоянно рассказывают, его информационная ценность теряется.
———————————-————————————————————
🎲 Простой пример: Монетка
Честная монетка (орёл/решка по 50%).
Энтропия: H = - [0.5*log₂(0.5) + 0.5*log₂(0.5)] = 1 бит.
Максимальная неопределенность! Памяти на кодирование информации уйдет больше.
Нечестная монетка (орёл — 99%, решка — 1%).
Энтропия: H ≈ 0.08 бита.
Система предсказуема, неопределенность мала. Памяти на кодирование информации уйдет мало.
💡 Где это используется?
Энтропия — не просто теория, она везде в нашей цифровой жизни:
Энтропия Шеннона — это фундаментальная мера хаоса и неопределенности, которая позволяет делать наши технологии эффективнее и умнее.
📚 Дополнительные материалы для прочтения:
Информация об информации. Энтропия Шеннона, демон Максвелла и предел Ландауэра
#программирование #данные
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4👏1
Условие:
Даны две строки s и t. Проверить, является ли s подпоследовательностью t.
Что такое подпоследовательность?
Это последовательность, которую можно получить из другой последовательности путем удаления некоторых элементов без изменения порядка оставшихся элементов.
Примеры:
s = "abc", t = "ahbgdc" → true
s = "axc", t = "ahbgdc" → false
Сложность:
⏰ Время: O(n) - проходим по строке t один раз
💾 Память: O(1) - используем только константную память
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3