Python вопросы с собеседований
25K subscribers
543 photos
23 videos
17 files
430 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
Forwarded from Machinelearning
📌Новый прорыв в алгоритмах: найден способ считать кратчайшие пути быстрее Дейкстры

Метод преодоления "барьера сортировки" для задач кратчайшего пути в ориентированных графах.

Группа исследователей из университетов Синьхуа, Стенфорда и Института Макса Планика представили детерминированный алгоритм для решения задачи SSSP в ориентированных графах с неотрицательными вещественными весами, который работает за время, пропорциональное числу ребер, умноженному на логарифмический множитель, который растет медленнее, чем обычный логарифм.

Проблема поиска кратчайшего пути от одной вершины до всех остальных (SSSP) — одна из фундаментальных в теории графов, и её история тянется с 50-х годов прошлого века. Классический алгоритм Дейкстры, в связке с продвинутыми структурами данных, решает эту задачу за время, которое примерно пропорционально сумме числа рёбер и произведения числа вершин на логарифм от их же числа.

Именно этот множитель - число вершин, умноженное на логарифм, долгое время считался теоретическим минимумом, так как в своей основе алгоритм Дейкстры побочно сортирует вершины по расстоянию от источника. Этот предел известен как «барьер сортировки» и казался непреодолимым.


🟡Основная идея работы - гибрид из алгоритма Дейкстры и алгоритма Беллмана-Форда.

Алгоритм Дейкстры на каждом шаге выбирает из "границы" - множества еще не обработанных вершин ту, что находится ближе всего к источнику. Это и создает узкое место, так как размер границы может достигать величины, сопоставимой с общим числом вершин в графе, и на каждом шаге требуется находить минимум.

Алгоритм Беллмана-Форда, в свою очередь, не требует сортировки, но его сложность пропорциональна числу ребер, умноженному на количество шагов, что слишком долго.

🟡Новый подход использует рекурсию.

Вместо того чтобы поддерживать полную отсортированную границу, алгоритм фокусируется на ее сокращении. А если граница слишком велика, то запускается несколько шагов алгоритма Беллмана-Форда из ее вершин.

Это позволяет найти точное расстояние до некоторой части вершин, чьи кратчайшие пути коротки. Длинные же пути должны проходить через одну из "опорных" вершин, которых оказывается значительно меньше, чем вершин в исходной границе. Таким образом, сложная работа концентрируется только на этом небольшом наборе опорных точек.

🟡Принцип "разделяй и властвуй".

Он рекурсивно разбивает задачу на несколько уровней. На каждом уровне применяется вышеописанная техника сокращения границы, что позволяет значительно уменьшить объем работы на каждую вершину, поскольку логарифмический множитель эффективно делится на другой, более медленно растущий логарифмический член.

В итоге, путем подбора внутренних параметров алгоритма, которые являются специфическими функциями от логарифма числа вершин, и достигается итоговая временная сложность, пропорциональная числу ребер, умноженному на этот новый, более медленно растущий логарифмический множитель.

✔️ Зачем это нужно
— Быстрее решаются задачи в навигации, графах дорог, сетях и планировании.
— Доказано, что Дейкстра — не предел, и можно ещё ускорять поиск кратчайших путей.


🟡Arxiv


@ai_machinelearning_big_data

#AI #ML #Sorting #Graphs #Algorithm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 ЗАДАЧА С СОБЕСЕДОВАНИЯ: что выведет код?

Что выведет следующий код — и почему?


a = 256
b = 256
print(a is b)

x = 257
y = 257
print(x is y)


Ожидаешь True в обоих случаях? Не всё так просто.

📌 В Python целые числа от -5 до 256 кешируются.
То есть a и b указывают на один и тот же объект → a is b → True

Но x и y — это уже разные объекты, потому что 257 не кешируется → x is y → False

⚠️ is сравнивает объекты, а не значения.
Если хочешь сравнить значения — используй ==

💡 Вывод: даже базовые типы могут вести себя неожиданно, если сравнивать их через is.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164🔥2
🔍 Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс в четверг

14 августа (уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Савве

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🐍 Snoop — умный дебаггер для Python, который делает отладку проще print-ов. Проект предлагает альтернативу классическому print() для отладки: просто добавьте декоратор @snoop к функции, и он покажет пошаговое выполнение кода с значениями переменных.

Интегрируется с Jupyter, поддерживает глубину вложенных вызовов (depth=2) и даже умеет взрывать сложные структуры данных (watch_explode). Не требует сложной настройки — достаточно pip install snoop.

🤖 GitHub

@python_job_interview
10👍3🔥1