Viktor
можешь я просто забыл дейкстру 😃
Ilia
жадный не обязательно наибольший, он же может быть и наименьшим )
Gennady
Gennady
Вот ты выберешь b, хотя глобально оптимально выбрать c
Ilia
Вот ты выберешь b, хотя глобально оптимально выбрать c
после б ты выберешь с, потому что д глобально имеет больше вес, чем с
Gennady
после б ты выберешь с, потому что д глобально имеет больше вес, чем с
Скорее локально. А предыдущий локальный максимум не вел к глобальному
Viktor
мне кажется, вот здесь чувак хорошо написал во втором комменте https://coderoad.ru/14038011/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B-%D0%B6%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9-%D0%B8%D0%BB%D0%B8-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
Viktor
то есть жадный алгоритм не в том смысле, что тупо идёшь туда где меньший вес, а в том что сперва готовишь «оптимальный переход» и принимаешь уже жадное решение после.
Null
Medved
Проголосовал за "посты в блоге", хотя формат видео я одобряю, и, полагаю, для тех, кто не сидит на литкоде сутками, именно видео с живой речью будет полезнее.
Ilia
Я за текст, потому что не смотрю видео с разработкой
Порридж В Ко-ливинге
Сергей Сема запугал всех в FAANG Interview, что все в своих сообщениях пишут в конце: “не выгоняйте, пожалуйста, если сочтёте за офтоп, государь милостивый” 😅
Ляяя... Эта противная группа с неадекватом. Меня в свое время заюанили за вопрос, который разросся на 10 сообщений во ФЛУД канале 🤡
Порридж В Ко-ливинге
Сергей Сема запугал всех в FAANG Interview, что все в своих сообщениях пишут в конце: “не выгоняйте, пожалуйста, если сочтёте за офтоп, государь милостивый” 😅
По факту, там нет никакой полезной информации, кроме моков и зарядиться мотивацией. Но для первого есть сервисы и другие группы, а для второго есть ютюб. А если хотите просто пообщаться, то есть l33tcode чатик
Sergei
Оба варианта хорошие
Roman
Алгоритм дейкстры на каждом этапе берет еще непосещенную вершину с минимальной меткой. То есть на первом шаге ты пойдешь в b и поставишь метку 1 для b, пойдешь в вершину c и поставишь метку c. На втором шаге ты пойдешь из вершины b в d и поставишь вершине d метку 11. На третьем шаге ты возьмешь вершину c (потому что у тебя в очереде 2 вершины с метками 2 - c и 11 - d) и пойдешь из нее в вершину d и поставишь метку 3. Конец алгоритма. Конец алгоритма в дейкстре считается момент, когда все вершины были посещены.
Ilia
Ведь ситуация когда не все вершины посещены, но ответ уже есть, очень даже реален
Ilia
Не просто так дейкстра применима только к положительным рёбрам
Gennady
то есть жадный алгоритм не в том смысле, что тупо идёшь туда где меньший вес, а в том что сперва готовишь «оптимальный переход» и принимаешь уже жадное решение после.
Собственно без разницы, как формируется оптимальный переход. Хоть в один шаг, хоть в 10. Суть же в принятии жадного решения, которое может не являться глобально оптимальным
Viktor
Собственно без разницы, как формируется оптимальный переход. Хоть в один шаг, хоть в 10. Суть же в принятии жадного решения, которое может не являться глобально оптимальным
просто по определению получается, что если ты можешь из локального оптимума прийти в глобальный — это жадинка, а если нет, то нет.
Viktor
в случае с дейкстрой, ну зависит от того что ты считаешь здесь «пространством возможных вариантов» для выбора и принятия решения о локальном оптимуме
Viktor
в зависимости от этого и будет ответ это жадный алгоритм или нет. то есть можно сказать, что нет, потому что «мы не знаем какое ребро даст оптимум в момент времени когда стоим перед выбором куда пойти»
Viktor
но это просто значит, что неверно выбрано «пространство возможных вариантов где нужно делать жадный выбор». в дейкстре оно не про «непосредственный выбор ребра с меньшим весом».
Roman
Ведь ситуация когда не все вершины посещены, но ответ уже есть, очень даже реален
А как проверить, что то, что у тебя есть - минимального веса?
Ilia
А как проверить, что то, что у тебя есть - минимального веса?
Финальная точка имеет вес меньше, чем оставшиеся непройденные
Ilia
Их нет смысла проходить, так как значение будет заведомо выше уже полученного
Roman
так в любом случае ты их должен посетить, чтобы проверить, что у них метка больше, чем у тебя есть
Evgeniy
Нужно всё проверять
Evgeniy
Если вы про Дейкстру
Ilia
Но момент, когда ответ уже есть, не отследить
Если выбирать всегда наименьшую непосещенную вершину, то отследить
Evgeniy
Ты выбираешь минимум и релаксируешь значения у соседей
Ilia
Ты выбираешь минимум и релаксируешь значения у соседей
Ну вот если у тебя минимум в конечной точке, то это и есть ответ, даже если ты посетил не все вершины
Evgeniy
У неё
Ilia
Когда всех соседей перебрал
Но как можно получить значение меньше, если все остальные вершины уже больше?
Evgeniy
Но как можно получить значение меньше, если все остальные вершины уже больше?
У остальных вершин же может быть ребро, ещё не пройденное, которое резко уменьшит значение. Другими словами, найдется другой путь до такой остальной вершины. И потом через нее в нашу текущую вершину расстояние получится меньше
Evgeniy
Поэтому приходится держаться минимальных значений
Ilia
С оговоркой, что отрицательных рёбер нет
Grant
под посты можно музычку слушать
Evgeniy
Текущая?
Ilia
К которой мы ищем путь
Evgeniy
Ну в Дейкстре мы же ищем кратчайшие пути до всех вершин
Evgeniy
От одной
Evgeniy
По моему мы говорим об одном и том же, но разными словами)
Ilia
В общем случае да, но выше скриншот был с явным намеком поиска из одной точки в другую, а не поиск всех возможных путей
Viktor
под посты можно музычку слушать
в видосах я уже вставил музычку на фоне за тебя 😂
Ilia
в видосах я уже вставил музычку на фоне за тебя 😂
Видос не посмотришь на ходу/в коротком перерыве
Roman
В общем случае да, но выше скриншот был с явным намеком поиска из одной точки в другую, а не поиск всех возможных путей
так я понял про что ты говоришь, про эдакую оптимизацию, когда вершина обозначенная как конечная имеет минимальную метку среди всех еще не посещенных. Тогда да, посещать все остальные не обязательно.
Evgeniy
в видосе разбираются примеры и показывается как проектировать алгоритм, блог это другое - здесь используем магию тут возьмем единорога и вот готовый код с решением каждому свое, но мне лучше на данном этапе развития видосы
Ilia
нужна помощь: а какие классические задачи на жадный алгоритм можно привести и какие есть примеры наоборот, где жадный алгоритм не очевиден, но очень отлично ложится на решение?
Viktor
а если нужен пример где просится жадинка, но на самом деле не работает, то это классическая задача на дп про размен монет.
Ilia
а если нужен пример где просится жадинка, но на самом деле не работает, то это классическая задача на дп про размен монет.
да, этот пример я запомнил отлично, его и собирался использовать, а вот где неочевидно похоже как раз с контейнером, спасибо )
Roman
алгоритм прима для MST (спойлер: почти такой же что и Дейкстра)
Evgeniy
а чем блог отличается? я примерно вот про такие посты говорю https://vitkarpov.me/posts/longest-inc-path-in-a-matrix/
на примере, ссылки ты показываешь как ты решаешь задачу, здесь скелет и код, здесь рекусрия и код с решение + дополния в видое, ты разбираешь примеры и показываешь как спроектировать алгоритм дальше уже можно на основании этих двух частей решить/решать самому, хоть на js, хоть на питоне, хоть на чем знаешь ведь главнее же навык решения задач, чем посмотреть как она решается, имхо
Roman
@vitkarpov а ты сис. диз проходил в aws? Готовлюсь к сис. дизу (не в aws), вот думаю посмотреть cockroach, TiDB, vitess и подобные, тоже самое по batch processing. Это оверкил для интервью или стоит?
Viktor
@vitkarpov а ты сис. диз проходил в aws? Готовлюсь к сис. дизу (не в aws), вот думаю посмотреть cockroach, TiDB, vitess и подобные, тоже самое по batch processing. Это оверкил для интервью или стоит?
вообще, рекомендация читать любые статьи из тех блогов, так что не оверкил. если ты говоришь про изучить АПИ cockroach — то не понятно зачем, если ты сможешь найти что-то про внутренности интересное и для себя понять, то не оверкил.
Viktor
это не значит, что тебе потребуется именно это, про cockroach никто не спросит.
Viktor
но решая свою задачу ты сможешь использовать аналогичный подход.
Roman
Не API, а абстракт описание систем, почему, как и зачем, алгоритмы консенсуса и т.д.
Viktor
Не API, а абстракт описание систем, почему, как и зачем, алгоритмы консенсуса и т.д.
ну это ж вообще отлично. это даже не про cockroach. все эти консистент хеширования реально имеет смысл посмотреть.
Viktor
другой вопрос точно ли тебе придется глубоко копать на интервью.
Viktor
возможно сис. диз. будет просто нарисовать ручки своего реста 😄
Roman
Я для себя нашел блог eng.uber.com Это какой-то кладезь сис. диза