Как я могу улучшить свою алгоритмическую изобретательность?

cs.stackexchange https://cs.stackexchange.com/questions/119359

  •  28-09-2020
  •  | 
  •  

Вопрос

Во время пресылки я почувствовал, что мое образование было в основном состоит из применения существующей теории к реальным проблемам мировых проблем (т.е. проектирование / анализ алгоритма).Я видел производные со стороны многих алгоритмов и доказательств их сложности, но я часто оставляю надоело вопросом о том, как можно найти алгоритм.Кажется, что представить себе развитие нового алгоритма, учитывая изобретательность, участвующую в разработке эффективного подхода.Мне интересно, есть ли способы обучения этой изобретательности.

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

Это было полезно?

Решение

Кажется, что конкурентное программирование может помочь вам. Или только «программирование» часть этого. Если вы хотите отточить свои навыки решения проблем (и, следовательно, ваша способность придумать оригинальные идеи), кажется, что решение конкурентоспособных проблем - это путь, поскольку они по дизайну ориентированы на этот навык.

Вам понадобятся два вида ресурсов: проблемы архивов и теории материалов.

Для архивов проблем я могу предложить вам попробовать

    .
  • timus.online (проблемы, требующие некоторые умные идеи / наблюдения начинаются после ~ 270 сложности)
  • codeforces.org (Tablet itmasset, богатое разнообразие проблем, но общее качество несколько ниже, чем на тим )
  • onlyjudge.org (в uhunts есть таблица с проблемами, которые охватывают большое разнообразие проблем; добавка для Книги конкурентное программирование 3)
  • riionlinejudge.com.br (имеет несколько больших проблем)

Также, есть atcoder.co.jp , который похож на CodeForces, но в основном предназначен для проблем с математикой. .

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

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

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

Хорошо, так. С этим вы сможете эффективно понять старые идеи, понять интуицию и интенсивность

у позади них. Это правдоподобные ресурсы (хотя, я думаю, вы уже можете использовать их):

  1. Введение в алгоритмы. Кормен
  2. geekforgeeks.com
  3. wikipedia.com (серьезно, у них есть отличные статьи на некоторых алгоритмах)
  4. Visualgo.net (особенно, если вы визуальный ученик;)
  5. Из моего опыта в этот момент вы сможете прийти с оригинальными идеями самостоятельно и естественным образом. Вы сможете увидеть соединения между идеями четко, и они начнут просто появиться в голову. Решение проблем будет поддерживать нейронные пути в вашем мозге, и вы не забудете теоретическую основу и интуицию, которую вы построили. Решение проблем также построит новые нейронные связи и принесет радость при обнаружении новых Insights.

    Наконец, я хочу сказать, что если ваше понимание ничего не училось, то у него есть ценность. Если вы объединяете две идеи вместе, даже если это было просто, вы получите новую идею, и она будет иметь ценность. Каждый раз, когда вы придумываете такие идеи, в любом случае вы создаете что-то ценное. Если ваша цель будет придумать что-то ценное, то вы получите успеху каждый раз. Если ваша цель будет придумать «Оригинальное понимание», то вы быстро будете серьезно демотивироваться, поскольку независимо от того, что вы будете делать, вы, скорее всего, потерпят неудачу (в начале). В конце концов, если вы будете следовать этим шагам или что-то подобное, вы не можете получить не лучше! Конечно, несколько в будущем, каждая десятая часть ваших идей будет по-настоящему оригинальным;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top