Как я могу улучшить свою алгоритмическую изобретательность?
-
28-09-2020 - |
Вопрос
Во время пресылки я почувствовал, что мое образование было в основном состоит из применения существующей теории к реальным проблемам мировых проблем (т.е. проектирование / анализ алгоритма).Я видел производные со стороны многих алгоритмов и доказательств их сложности, но я часто оставляю надоело вопросом о том, как можно найти алгоритм.Кажется, что представить себе развитие нового алгоритма, учитывая изобретательность, участвующую в разработке эффективного подхода.Мне интересно, есть ли способы обучения этой изобретательности.
Мой вопрос в том, как я могу культивировать навыки, необходимые для разработки оригинальных подходов к количественным проблемам?Есть ли ресурсы, которые сосредоточены на этих навыках?
Решение
Кажется, что конкурентное программирование может помочь вам. Или только «программирование» часть этого. Если вы хотите отточить свои навыки решения проблем (и, следовательно, ваша способность придумать оригинальные идеи), кажется, что решение конкурентоспособных проблем - это путь, поскольку они по дизайну ориентированы на этот навык.
Вам понадобятся два вида ресурсов: проблемы архивов и теории материалов.
Для архивов проблем я могу предложить вам попробовать
- .
- timus.online (проблемы, требующие некоторые умные идеи / наблюдения начинаются после ~ 270 сложности)
- codeforces.org (Tablet itmasset, богатое разнообразие проблем, но общее качество несколько ниже, чем на тим )
- onlyjudge.org (в uhunts есть таблица с проблемами, которые охватывают большое разнообразие проблем; добавка для Книги конкурентное программирование 3)
- riionlinejudge.com.br (имеет несколько больших проблем)
Также, есть atcoder.co.jp , который похож на CodeForces, но в основном предназначен для проблем с математикой. .
Ключ к поиску оригинальных идей - знать, что люди уже придумали. Если вы понимаете эти идеи и можете применить их относительно легко, то вы а) могут придумать умную идею, объединяя эти более старые идеи в умный путь и б) вы можете найти принципиально новые идеи гораздо более эффективно, потому что вы знаете, что нет Новая идея и что не на новый образ мышления найти новые идеи.
Если вы согласны с предыдущим абзацем, вам понадобятся ресурсы, где вы сможете узнать новые концепции и идеи. Ключ с этим - не только понимать теорему или алгоритм, но и для понимания интуиции и доказательства. Доказательства дают явную информацию о том, как придумать и как быть уверенным, что идея работает. Понимание хитростей и алгоритмов (мышления), используемые в доказательствах, является ключом, чтобы придумать свои собственные идеи.
Интуиция, с другой стороны, является неявной идеей, это то, что связывает проблемы, его доказательства (или подмножество доказательств) и тема проблемы в целом. Я говорю это, чтобы вы не думали, что интуиция - это что-то волшебное или что, если вы не получили его, когда вы читаете доказательство, то вы не получите его вообще. Чтобы приобрести его, вы должны выполнить эти шаги
- .
- , прежде чем увидеть решение, попробуйте подумать об этом по крайней мере 30 минут (для меня, Doodling помогает многому придумать интуитивные решения)
- тогда, если вы чувствуете, что некоторые идеи, которые вы думаете, собираются работать на 100%, но вы не можете добраться до них в своем мозге, не отказывайтесь от него и не сдавайся, пока не перейдете на спать. Если вы не сможете спать думать о проблеме, то вы уверены, что вы проходите, когда просыпаетесь. ( https://psychology.stackexchange.com/a/13366 + мой опыт).
- Без какой-либо зависимости от того, решили ли вы проблему или не после такой процедуры, когда вы откроете доказатель (ы), вы сможете поглотить и проанализировать их гораздо более эффективно, поскольку вы будете читать Чтобы не знать идеи, но выяснить, почему ваши идеи не работали, насколько ты был рядом, где вы допустили ошибку в своем мышлении, что вы упустили, почему эта вещь, которую вы сосредоточены слишком много, не имел этого актуального , Что вы должны были знать, чтобы решить это в любом случае и т. Д. .... (Это как SQ3R < / A> Метод также работает, он делает вас заданным вопросом текста в первую очередь и только тогда позволяет прочитать его как способ ответить на вопросы; активное чтение, вместо пассивного чтения).
- Если вы смогли извлечь некоторую разведочную интуицию из доказательств, поздравляю! Теперь забудьте об этой проблеме и вернитесь через два или три дня и решайте другую подобную или немного сложную проблему на той же теме. Таким образом, вы «отпечатываете» эту интуицию в вашем мозге, так сказать, для относительно долгого времени (см.,
Рассвенное повторение ) - Если у тебя нет, не грустить. Вы поняли более или менее, как работают доказательства. Это означает, что единственное, что осталось, - это объединить их как-то с интуицией. Для этого просто продолжайте решение проблем на той же общей теме (строки, графики, теории чисел и т. Д.). Интуиция не связана с некоторой конкретной проблемой (если это было, интуиция не сможет помочь решить другие проблемы), если вы поймете интуиции за другими проблемами, то, естественно, вы поймете, что вы поймете интуицию за исходной проблемой, а также !
Хорошо, так. С этим вы сможете эффективно понять старые идеи, понять интуицию и интенсивность
у позади них. Это правдоподобные ресурсы (хотя, я думаю, вы уже можете использовать их):- Введение в алгоритмы. Кормен
- geekforgeeks.com
- wikipedia.com (серьезно, у них есть отличные статьи на некоторых алгоритмах)
- Visualgo.net (особенно, если вы визуальный ученик;)
Из моего опыта в этот момент вы сможете прийти с оригинальными идеями самостоятельно и естественным образом. Вы сможете увидеть соединения между идеями четко, и они начнут просто появиться в голову. Решение проблем будет поддерживать нейронные пути в вашем мозге, и вы не забудете теоретическую основу и интуицию, которую вы построили. Решение проблем также построит новые нейронные связи и принесет радость при обнаружении новых Insights.
Наконец, я хочу сказать, что если ваше понимание ничего не училось, то у него есть ценность. Если вы объединяете две идеи вместе, даже если это было просто, вы получите новую идею, и она будет иметь ценность. Каждый раз, когда вы придумываете такие идеи, в любом случае вы создаете что-то ценное. Если ваша цель будет придумать что-то ценное, то вы получите успеху каждый раз. Если ваша цель будет придумать «Оригинальное понимание», то вы быстро будете серьезно демотивироваться, поскольку независимо от того, что вы будете делать, вы, скорее всего, потерпят неудачу (в начале). В конце концов, если вы будете следовать этим шагам или что-то подобное, вы не можете получить не лучше! Конечно, несколько в будущем, каждая десятая часть ваших идей будет по-настоящему оригинальным;)