3

Ответ на пост «Гуманитарий пытается влезть в программирование. Day two» 

Часто вижу здесь посты, о попытках уйти в программисты с нуля. И хочу для данной аудитории, привести пример, так сказать на пальцах, чем отличается обучение по книжкам типа "Программирование распределенных нейросетей на машинных кодах за 10 дней" и обучением в институте. Ну и в целом, это помогает оценить свои возможности, и понять, а оно вам вообще надо?


Попробуйте написать алгоритм, для классической задачи, которую решают первокурсники. Только по чесноку, без гугления.


Есть n количество работников и n количество задач. Каждый из работников, в силу своей квалификации, может выполнить каждую задачу за разное количество времени. Нужно посчитать, за какое минимальное время, работники справятся с этими задачами, при условии, что каждому работнику будет назначена задача с которой он справляется быстрее всего.


Ниже картинка для наглядности. Три работника, три задачи. Т.е. первый работник может выполнить первую задачу за 3 часа, вторую за 5, третью за 7. Ну и т.д.


Для чистоты эксперимента, дальше картинки читайте после выполнения задания.

Ответ на пост «Гуманитарий пытается влезть в программирование. Day two» Программирование, Python, Новичок, Мат, Ответ на пост

После того как решите, сравните эффективность вашего решения и классических оптимальных алгоритмов решения "задачи о назначениях". И представьте, насколько продуктивнее была бы ваша работа, если бы вы изначально имели представление о классических задачах в программировании, про которые не упоминается в большинстве книг по программированию на каком либо языке.

Дубликаты не найдены

+7

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

А вот когда проекты приходят от таких алгоритмических богов, то там не только плакать хочется, но найти и прибить руки к стене, про архитектуру я вообще молчу.


Каждый должен заниматься любимым делом и не важно кто он


выговорился, аж легче стало

раскрыть ветку 7
0
Ты не поверишь, но довольно часто сталкиваюсь с задачами, где требуется хорошее знание математики. Например из последнего, навигация по биконам. Попробуй напиши алгоритм трилятерации.
раскрыть ветку 2
0

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

0

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

0

Алгоритмы не нужны? Я правильно понял?

раскрыть ветку 1
0

скажем так, они не необходимы, без них можно жить, но вот когда речь зайдет за задачи связанные с математикой, физикой для игр, тогда они понадобятся, но для большинства повседневных задач нет

-2
нестандартное мышление решает большинство задач связанных с программированием

Замечательное эмпирическое определение говнокода.

раскрыть ветку 1
0

Отличная попытка накинуть на вентилятор

+3
Попробуйте написать алгоритм, для классической задачи, которую решают первокурсники

Этим студентам очень повезло, что дают такие задачи уже на первом курсе. В типичном региональном ВУЗе города-миллионника на первом курсе будущих программистов будут учить сохранять текстовый файл в паскале (а в лучшем случае в делфи) и нагрузят гуманитарными предметами типа социологии, экологии и философии. Ну и матан будет на первом семестре уровня 11-го класса школы.  Самое интересное начнется на курсе 3-м. Так что не стоит обнадеживать людей, а то побегут сейчас все в универы.

раскрыть ветку 7
0

от вуза зависит на самом деле.

учился в хаи первые 3 года, потом наработал язву дпк и уехал доучиваться поближе к дому.

там нам на 1-2 курсах давали пару пар профильных предметов, пару пар вышки уровня 11 класса физмата в моей школе, а остальное было забито всяким шлаком типа философии, культурологии, анатомии трупов марсианских дождевых червей, особенностями культуры поведения спаривания малазийских боингов и т.д.

благо преподаватели профильные были нормальные и давали нормальную базу, плюс с дискреткой очень сильно повезло - ее преподавал один крайне офигительный и умный мужик.

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

0

Дружище, эту задачу непосредственно решали на днях со студентом первого курса тульского политеха. Так что не надо за все ВУЗы говорить.

раскрыть ветку 5
0

Я и говорю, что должно повезти, чтобы такое давали на первом курсе. Как минимум знаю два города-миллионника, где в политехах не дают такое на первом курсе. Либо я что-то слишком усложняю в решении задачи, ведь там могут потребоваться графы, а их встречают впервые на мат. логике где-то на 2-3-м курсе.

раскрыть ветку 4
+3
10 лет уже как типа программист. Всего разок в работе за это время мне понадобилась математика чуть более сложная, чем а + b :) Алгоритмы - ни разу.
раскрыть ветку 2
+3

от области зависит на самом деле.

товарищ с потока подался в игростроение. там крайне сильно нужно знать много разных алгоритмов

0

писали с товарищем аналог микротиковского винбокса, но для обычного линя.

самое сложное в клиентской части было рисование гуя. в серверной - работа со строками в плюсах без буста (товарищ не захотел изобретать протокол и все сделали в виде апишек)

+1

Универ учит думать, точнее мыслить. А на сях или 1с писать это ремесло.

Могу задачку в топку закинуть... Но оно больше электронщиков касается)))

0

Супергуманитарий врывается. Без гугла. Думал минут 5.

Складываю числа всех часов по каждой задаче.

Задача 1- 8, 2- 16, 3- 16. Это значит, что первая задача выполняется быстрее других в любом случае, поэтому можно там взять того работника, что может выполнять ее долго и оставить быстроработающих на времязатратные задачи и сэкономить на них. Во второй и третьей берем, что по быстрее. Получается первый (3 часа)- третий (3 часа) - второй (четыре часа). Итого 10 часов.

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


А теперь тебе вопрос, автор.

Могу ли я называть это алгоритмом и насколько я дебил? Или я что-то умное написал?

раскрыть ветку 2
0

Оооо! А может от максимального возможного количества часов отнять минимальное возможное и получим потенциально возможную экономию времени.

Задача 1 - 1 час, 2 - 5, 3- 3. Получаем, что чем больше число, тем приоритетней задача, вторая- самаая приоритетная, берем самого быстрого- второго. Третья вторая самая приоритетная, а второй рабочий занят второй задачей, берем второго самого быстрого- третьего. Ну и по аналогии с первой.


Я умный? Или все как обычно?

раскрыть ветку 1
0

Какой-нибудь программист-сан что может сказать о моих умениях владеть функцией ВПР в экселе для решения этой задачи?

https://gofile.io/?c=MH85JR


Кстати мне понравилось. Давай еще задачи! А какой ответ правильный?

0

из вики о задаче о назначениях:


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

0

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

0

Рассуждения гуманитария: выбираем самую быструю задачу для 1-го работника - это 1-я задача за три часа (1-1),  выбираем самую быструю задачу для 2-го работника - это 1-я задача, но она уже исполняется, поэтому следующая быстрая задача - это 3-я за 4 часа (2-3), 3-му работнику остается 2-я задача за 3 часа (3-2). Складываем часы 3+4+3=10. Возможно, это не самый быстрый вариант, поэтому начинаем цикл заново, для 1-го рабочего берем следующую по скорости задачу - это 2-я за 5 часов (1-2), далее идти по этому пути нет смысла, так как любые 2 минимальные числа для оставшихся работников в сумме не дадут число меньше 10, для 7 часов для 1-го работника та же ситуация, соответственно 1-й вариант самый быстрый (или равный). Уверен, что есть и побыстрее алгоритмы, но щас бы в вебе нужны были алгоритмы, а в основном туда идет большинство.

раскрыть ветку 9
+2
Складываем часы 3+4+3=10
В задаче это в явном виде не указано, но вроде по классике предполагается, что задачи выполняются параллельно, т.е. минимальное время равно 4 часа.
0

А теперь у тебя табличка 1000х1000. Удачи!

раскрыть ветку 7
0

Ну так это через код решается, пусть кремниевый мозг пыхтит. С другой стороны 2 секунды гугления выдали Венгерский метод, которым эта задача решается с полпинка. Что хотел сказать автор, не совсем ясно, учитывая, что гугл - главный инструмент кодера.

раскрыть ветку 6
0

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

-1

Хм-м-м, вычислить среднее арифметическое для всех комбинаций, а потом выбрать наиболее близкие варианты из допустимых одновременно? Так хотя бы все заняты будут.

Иллюстрация к комментарию
раскрыть ветку 2
+1

найти минимум из вычисленного. работника оставить, двух уволить, а на оставшегося переложить обязанности уволенных; через некоторое время лишить части зп, т.к. он не справляется с нагрузкой. на все возражения сказать - вас таких за забором очередь стоит, не нравится - иди вон.

раскрыть ветку 1
0

Ловите магистра МБА.

-2

Да пускай пыхтит. У нас, видимо, страна такая, где мало кто по образованию работает. Даже министром обороны может стать не военный и не служивший...

-4

и как это поможет, например, мне срастить 2 исполняющихся, независимых фрагмента кода, один закомпиленый gcc другой msc, или вообще freepascal?

раскрыть ветку 6
+5

ТС суть неверно описал.

Универы эти ваши помогают вкатываться с азов - с алгоритмов, помогают развить алгоритмическое мышление, которое потом будет жизненно необходимо. Это логическая ступень развития кодера.

А вот вкатывальщики в ойти хуярят сразу Keras+Tensorflow по курсам от Ерохина за 10 дней и в надежде ебошить 300кк\сек на нейроночках , а в итоге обсираются на базовых принципах программирования и в лучшем случае хуярят на галеры в веб макаки эти ваши лендинги пиздрячить по 100 в день

раскрыть ветку 2
+2

Так я об этом и написал.

-2

без шизофрении кодером всё равно не станешь, хоть убейся ап эти алгоритмы.

0

можно сделать велосипед с квадратными колесами и костылями вместо спиц.

так много чего работает, особенно на стыке разных инфраструктур

0

Наверное нужно для начала пропатчить kde2 под freebsd

раскрыть ветку 1
-1

нее, всё гораздо проще. но да, - тоже слишком специфично.

-5

эм, сумма минимальных значений в каждой строке матрицы. это даже не сортировка ведь

раскрыть ветку 12
+1
Ты видимо не понял задачу. Для начала тебе надо назначить на каждую работу по работнику, который справится с ней быстрее.
раскрыть ветку 11
-1

и чем это отличается от двумерного массива, где столбцы выражают номера задач, а строки - работников?

раскрыть ветку 10
ещё комментарии
Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: