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


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

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

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

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

8 64

8 ответов:

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

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

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

EDIT:

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

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

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

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

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

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

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

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

Он работал еще в 1971 и это все еще работает сегодня.

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

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

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

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

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

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

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

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

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

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

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

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

- Джош Вайтцкин, 8-кратный чемпион страны по шахматам, 13-кратный чемпион страны и 2-кратный чемпион мира

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