Решение проблем/Алгоритм Умение - умение или может быть развито с практикой?

Каждый раз, когда я начинаю тяжелую проблему, и если не могу определить точное решение или не могу начать работу, я попадаю в эту бесконечную дискуссию с собой, как показано ниже:

  • Эта проблема навыки решения/математики/алгоритмов одарены (не то, что вы можете научиться практикуя, практикуя, вы только овладеть теми проблемами, которые вы уже решили раньше)

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

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

Ответ 1

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

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

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

EDIT:

Я только что наткнулся на этот ответ в файле math.stackexchange. Я думаю, что это одно из лучших объяснений того, как изучать алгоритмы, которые я прочитал, хотя он пишет о шахматах и ​​математике.

Ответ 2

1) Не пытайтесь решить проблему в ее самой общей абстракции.
2) Выберите подходящее время, когда ваш ум работает максимум.

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

Мое любимое время для решения таких проблем - рассвет (4-6 утра). Хорошо спите накануне, и пробуждение готово решить проблему. Тишина - ваш друг.

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

Ответ 3

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

Ответ Джо: "Майкл, если вы действительно хотите знать, как это сделать, вы должны выяснить, как вы это сделаете сами".

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

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

Он работал еще в 1971 году, и он по-прежнему работает сегодня.

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

  • Развитый талант. У человека есть природный талант, но это само по себе недостаточно для решения проблем. Я никогда не видел новорожденных, пишущих код. Нужно получить образование. Чем раньше тем лучше. Кроме того, качество школы имеет большое значение. Мы никогда не должны отрицать тот факт, что человек, у которого не было возможности научиться программированию в хорошей школе раньше, тогда у него или у него есть недостаток в гонке за успехом. Однако, если кто-то пропустит хорошие школы рано, то гандикап может быть покрыт тяжелой работой. Например, моя жена училась в другой области, но после окончания университета она не нашла должной работы. Поэтому я начал обучать ее. Через месяц она научилась учиться и могла решать практически любые проблемы, которые ей представляли, но она еще не была эффективной. Она постепенно начала учиться в автоматическом режиме. Через год она уже была профессиональным кодером. У нее нет бумаги из школы, которую она может закодировать, но она делает фантастическую работу. Таким образом, она пропустила раннее образование, но позже смогла нейтрализовать препятствия. Развитый талант можно охарактеризовать как совокупность информации, полученной и известной вместе с правильным отношением, научного подхода к новым типам проблем.

  • Практика: практика хороша для повышения уровня развитого таланта, но она НЕ ДОЛЖНА быть единственным источником развития таланта. Наряду с практикой теоретические горизонты должны регулярно расширяться.

  • Рабочая стратегия: можно быть чрезвычайно талантливой, иметь много знаний. Если у него нет правильной рабочей стратегии, у него или у него есть недостаток. Всякий раз, когда задается новая задача, необходимо задать правильные вопросы:

    • Какова была ближайшая задача для этого? Могу ли я повторно использовать свое решение?
    • Что я должен научиться решать эту проблему?
    • как я могу написать четкий и эффективный код для решения проблемы?

Итак, ответ таков: хотя хорошо иметь отличное образование как можно раньше, это не обязательно. Не забывайте, что жизнь - лучшая школа, и вы можете восстановить упущенную возможность позже, если у вас есть талант, сила воли и источник информации. Практика не только показывает вам правильные шаги для решения проблемы, но и расширяет ваши горизонты. Например, если понимать системы счисления, то он или она сможет понять множество вещей позже, например, цвета в CSS, PSD или переполнение числа. Если вы узнаете, как закодировать на Java, то он или она будет очень быстро понимать С#. Таким образом, практика дает вам знания о решении данного типа проблемы, но также дает новые теоретические знания, которые будут полезны в различных областях. Основное умение, которое нужно развивать, - это способность быстро учиться.

Ответ 7

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

Ответ 8

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

- Джош Вайцкин, восьмикратный чемпион Национального шахматиста, 13-часовой национальный и двукратный чемпион мира

Он сам говорит это в своем голосе в Chessmaster Grandmaster Edition