Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
7 / 6 / 1
Регистрация: 12.10.2021
Сообщений: 397

Алгоритмическое мышление

30.05.2024, 20:03. Показов 8144. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот уже заканчиваю вуз по направлению 09.03.01 за 4 года учёбы всё так и не подружился с программированием, что-то даётся легко, что-то сложно. Знаю что, чтобы решить любую задачу нужно построить алгоритм, но у меня это не получается. Расскажите как вы сами начинали, как у вас получилось научиться делать алгоритмы или как вырабатывали это алгоритмические мышление. И да я работаю на должности техник-программист, но не всё так гладко, что то получается, что то нет, опять же думаю что из-за того что нету этого самого алгоритмического мышления.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2024, 20:03
Ответы с готовыми решениями:

Абстрактное мышление
Всем привет.уважаемые программисты, научите пож-ста,мыслить абстрактно.не раз слышал что это очень важно.Обьясните суть и способ! Я...

Алгоритмическая сложность задачи
Читаю книгу "Грокаем алгоритмы". Все с самого начала. Добрался до задания. "Запишите «О -большое» для каждой из следующих...

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

66
1 / 1 / 0
Регистрация: 12.07.2016
Сообщений: 39
Записей в блоге: 2
01.02.2025, 17:46
Студворк — интернет-сервис помощи студентам
Можно поработать в курьерской службе: на сортировке и на маршруте. Сразу откроются алгоритмы сортировки, поиска, комбинаторные, на маршруте откроются алгоритмы на графах

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

Понять разницу между алгоритмом, методом и принципом куда более интересная задача, как мне кажется.
0
25 / 61 / 4
Регистрация: 10.06.2023
Сообщений: 998
01.02.2025, 18:26
Еще один термин в тему - дорожная карта.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
01.02.2025, 23:28
Цитата Сообщение от dmitrynikolaev3 Посмотреть сообщение
alexu_007, нет
Хорошо, попробую объяснить в 2-х словах. Может поймешь, что такое алгоритм и алгоритмическое мышление.

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

Бинарный поиск - это разделить нашу отсортированную последовательность примерно пополам, и посмотреть - интересующее нас значение больше или меньше половины. Если больше - отбрасываем меньшую половину (и наоборот), т.к. значения там заведомо нет. Оставшуюся часть делим ещё пополам - и так далее. В результате последовательность длинной в 64 бит (18446744073709551615) можно полностью проверить за 64 шага, а не последовательно перебирать все секстиллионы (или что там получается). Несложно? Это и есть алгоритм, решить за вменяемое время то, на что последовательным перебором "в лоб" ушли бы миллиарды лет.

Как то так. Алгоритмическое мышление - это способность найти интеллектуальный (а не тупо в лоб) способ решения задачи. И такие алгоритмы необязательно придумывать самому или держать все в голове - большинство алгоритмов уже давно придуманы за нас, их нужно только поискать и приспособить для своих нужд.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
02.02.2025, 17:14

Не по теме:

Цитата Сообщение от alexu_007 Посмотреть сообщение
Может поймешь
А может не поймет - и правильно сделает? :)

Цитата Сообщение от alexu_007 Посмотреть сообщение
Любой интеллектуальный поиск осуществляется только в заранее отсортированной последовательности.
Не любой и не только, напр хеш не предполагает сортировки данных хотя поиск по нему в общем случае заметно быстрее чем деление отрезка пополам.
Цитата Сообщение от alexu_007 Посмотреть сообщение
Алгоритмическое мышление - это способность найти интеллектуальный (а не тупо в лоб) способ решения задачи.
Ну это скорее "оптимизаторское мЫшление" Тут полегче - и проверить можно, и наработки есть. Но увы, обычно дай бог получить "тупо в лоб", о скорости разговор не идет.
Цитата Сообщение от VAF34 Посмотреть сообщение
Команда "Принеси пива" понятна, но она содержит много уровней алгоритмизации: Первый -взять деньги и сходить за пивом. И так до глубокого уровня - одеть пальто, открыть дверь и т.д. Если любую задачу так дробить, то это, в моем понимании и есть алгоритмическое мышление.
Все прекрасно дробится только на уровне шуток, на практике с нетривиальной задачей так не выходит (примеры здесь, на этом форуме). Хотя все признают что умение разбить задачу на части - чуть ли не талант программиста.

Возвращаясь к стартовому посту. Никакого "алгоритмического мЫшления" нету, совет "не брать дурного в голову и тяжелого в руки" совершенно уместен. Многие программисты хорошо владеют готовыми, проверенными решениями и удачно их применяют - не вижу в этом ничего плохого.
Цитата Сообщение от dmitrynikolaev3 Посмотреть сообщение
Знаю что, чтобы решить любую задачу нужно построить алгоритм,
Никто ничего не строит, просто знают как решать (хотя бы примерно)

Не по теме:

Ну почти никто :)

0
Модератор
10468 / 5764 / 3410
Регистрация: 17.08.2012
Сообщений: 17,519
02.02.2025, 17:24
Цитата Сообщение от dcc0 Посмотреть сообщение
Можно поработать в курьерской службе: на сортировке и на маршруте. Сразу откроются алгоритмы сортировки, поиска, комбинаторные, на маршруте откроются алгоритмы на графах
А что, так МОЖНО БЫЛО??? А я-то, дурак, у Кнута все его грссбухи изгрыз...
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
02.02.2025, 20:57
Цитата Сообщение от dcc0 Посмотреть сообщение
Сразу откроются алгоритмы сортировки, поиска, комбинаторные, на маршруте откроются алгоритмы на графах
От этого списка как-то "веет академизмом". Единственное с чем я часто сталкивался - алгоритмы поиска. И то - специфика работы. Все остальное выглядит "для обучающих целей". Конечно нельзя "заявлять за всех", но трудно представить себе что программист приходит на работу и занимается чем-то типа сортировки, комбинаторики или графов. В лучшем случае это редкий эпизод. Куда более вероятно он будет делать UI, накидывать или переделывать структуры данных, что-то отлаживать и.т.п.

А если уж речь об "алгоритмах", то это обычно существующие высокоуровневые алгоритмы, возиться с сортировкой никто не будет. Вот помнится на этом форуме интересовался как сделать движение множества объектов (типа стая, стадо, рой, косяк). На первый взгляд просто: объекты близко - отталкиваются, далеко - притягиваются. Но так не работает. Помню тогда одна экспертша плюсов обвинила меня в неграмотности и.т.п.
0
1 / 1 / 0
Регистрация: 12.07.2016
Сообщений: 39
Записей в блоге: 2
02.02.2025, 23:28
Представить трудно, но я так делал:
Имея диплом филолога, работал в музее режиссёром монтажа, втихаря из спортивного интереса занимался выдумывание комбинаторных алгоритмов (без блок-схем), очень интересно было попробовать разработать алгоритм с 0, выдумать.
Но и в курьерской службе работал, но уже потом.

В итоге получилось то что нужно.
Принцип такой:
1) На бумаге ручкой находим последовательность, как правило, обычным перебором, подбором и т.д..
(комп надо убрать на это время, лучше уехать на природу: на дачу, к морю, уйти в горы, в лес, в степь).
(т.е. главное найти закономерность на бумаге, до этого надо вообще себе этот алгоритм в голове представить).
2) Находим способ зациклить, если нужен алгоритм для неизвестного количества n.
3) Стараемся максимально точно описать словами.
4) Перекладываем в псевдокод.
5) Перекладываем псевкдокод на высокоуровневый язык, PHP, к примеру.
6) Перекладываем код на нормальный язык (в общем, как мне кажется, почти единственный нормальный),
т.е. на C (ANSI).

7) Относим Ассемблерщику, и он уже перекладывает на Ассемблер или делаем это сами, если знаем Ассемблер.
Последняя (7 опция) вообще необязательная, жирная, так сказать.


P.S.
Начальные стадии алгоритмизации немного напоминают алхимический процесс.


P.P.S.
Ещё алгоритм может присниться, как таблица хим. элементов приснилась Менделееву.


А ещё надо честно сказать, что понимание алгоритмов, ритмов, закономерностей и т.д. иногда приходит с возрастом.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
03.02.2025, 02:42
Да, интересный момент: а как возникают алгоритмы? Ну откуда-то же они берутся. Очень популярно заблуждение что это, мол, продукт фундаментальной науки. И что все вокруг "дифуры", некоторые говорят "матан". Ну а раз так - надо обратиться к профессионалам, т.е. к людям с хорошим академическим образованием и глубоким знаниями в физике, математике и др. Таких попыток помню не одну (и не 2), но всякий раз - полный провал. Во-первых, выясняется что наука не занимается тем что нам нужно, это, дескать, "не фундаментально". Во-вторых, знания действительно впечатляют, но алгоритмисты они никакие, и учиться этому не хотят А без этого дело не идет

Цитата Сообщение от Igor3D Посмотреть сообщение
как сделать движение множества объектов (типа стая, стадо, рой, косяк).
Неудача на этом форуме меня не смутила, и, порывшись в инете, я нашел алгоритм который давно используется в массе приложений, игр, апплетов и др всеми кому не лень. Его придумал некто Рейнольдс (гуглить boid) лет 40 назад. Есть и исходники, но алгоритм настолько прост и приятен что самому написать - одно удовольствие. Разумеется никаких дифуров и матанов там нет. Что вызывает "плохо скрываемое раздражение" научных работников. Ну это ничего не меняет
0
25 / 61 / 4
Регистрация: 10.06.2023
Сообщений: 998
03.02.2025, 09:21
Что-то я не понял, когда от обсуждения, что такое алгоритмическое мышление, перешли к разговору о каком-то конкретном, с не совсем ясными деталями, алгоритме.
0
1 / 1 / 0
Регистрация: 12.07.2016
Сообщений: 39
Записей в блоге: 2
03.02.2025, 16:05
Вся сложность с компьютерным алгоритмами в том, что надо все время помнить о том, что программа транслируется, зациклена. Время и процесс - постоянные (непостоянные), с которым работает программист. Может быть, поэтому именно физики лучше понимают устройство компа, особенно low-level.
Вторая сложность: алгоритмы - жёсткие, строга детерминированные ... можно сказать хрупкие: одна неточность, ошибка, опечатка, и алгоритм не работает или работает не так.
И третье: программист работает с мнемониками, так или иначе. То, что стоит за этими мнемониками (булева алгебра, работа схем, триггеры, сумматоры и т.д.), иногда работает не так как хочется (какая-нибудь проблема с непониманием, где символ, а где число, где строка начинается и заканчивается и т.д.), т.е. далеко не всегда есть полное понимание работы машины. Т.е. от индивидуальной психологии много зависит, знания конкретной архитектуры.
Человек может быть способным к алгоритмизации, но может плохо знать синтаксис языка и т.д., и т.д.
Может хорошо знать синтаксис, но техникам алгоритмизации его не обучали.

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

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

P.S.
Бывает и так, что человеку на самом деле эта область (алгоритмизация) неинтересна, - выбрал не ту профессию, пошёл учиться туда, куда родители настояли и т.д., и т.д.. Может быть даже мысленно живёт чем-то другим: литературой, зрительными образами, природой.
Или вообще о спорте и путешествиях мечтает.
До любой науки в можно не дорасти, но и как бы перерасти (условно говоря) душой тоже можно.

Добавлено через 4 часа 5 минут
Ладно, что я всю эту лирику изливаю и сказки рассказываю, некоторые вещи дух открывает, и сам человек не может.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
03.02.2025, 16:26
Цитата Сообщение от VAF34 Посмотреть сообщение
Что-то я не понял, когда от обсуждения, что такое алгоритмическое мышление, перешли к разговору о каком-то конкретном, с не совсем ясными деталями, алгоритме.
Это пример действительно хорошего алгоритма. Помимо всего у него есть неочевидное достоинство: он провоцирует "креативность" юзера. Манипулируя параметрами можно получать очень разные поведения "стаи", и счастливый юзер гордо заявляет "я сделал!"
Цитата Сообщение от dcc0 Посмотреть сообщение
но техникам алгоритмизации его не обучали.
А такие методики обучения существуют? Не видел. Малосодержательное "последовательность действий", придурковатое рисование блок-схем (отчетность нужна), ну может плюс какая-то книга, напр Вирт или Кнут. Ото и все.

И я бы так не упивался "творческой составляющей" алгоритмизации. Это скорее проблема, от велосипедиста который не дружит с технологиями избавляются быстро, оплачивать его вдохновение никто не хочет.
0
1 / 1 / 0
Регистрация: 12.07.2016
Сообщений: 39
Записей в блоге: 2
03.02.2025, 19:29
Это вопрос того, как было и как стало.
Раньше программисту все равно надо было получить задание от математика или от проектировщика системы, инженера и т.д.

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

Добавлено через 35 минут
А вообще всё с этим вопросом творчества проще, чем кажется. Если человеку интересно, то получается
(но в целом в программировании что-то принципиально новое написать трудно, поэтому в общем и интерес быстро угасает у многих).
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
03.02.2025, 21:26
Цитата Сообщение от dcc0 Посмотреть сообщение
Раньше программисту все равно надо было получить задание от математика или от проектировщика системы, инженера и т.д.
Судя по всему Вы совершенно не знаете, как было ранее. Когда закончил техникум, получил специальность математик-программист. А после института все программисты становились минимум инженерами (само высшее образование уже подразумевало данную должность).
Ранее все программисты одновременно могли быть и математиками, в зависимости от способностей. Те, кто умнее и занимались одновременно разработкой. Но знал очень умных просто программистов (не всем же быть зав. группами и начальниками). Относительно недавно после очень долгого перерыва позвонил одному знакомому, чтобы узнать, занимается ли еще программированием, в разговоре упомянул, что всегда был очень высокого мнения о его уме, а в ответ неожиданно услышал, что он уже тогда был кандидатом математических наук, хотя и обычным старшим инженером.
0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,117
Записей в блоге: 2
03.02.2025, 23:49
Цитата Сообщение от dcc0 Посмотреть сообщение
то ему дорога к тому самому алгоритмисту-математику.
Это легенда что есть (или должен быть) "еще кто-то" (типа "постановщик") который делает из юзеровских "хотелок" задачу для конкретной реализации. Нет таких и никогда не было, все совмещается в одном лице
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
04.02.2025, 18:00
Цитата Сообщение от Igor3D Посмотреть сообщение
который делает из юзеровских "хотелок" задачу для конкретной реализации
Называется "бизнес-аналитик".

Добавлено через 11 минут
Цитата Сообщение от 755 Посмотреть сообщение
Когда закончил техникум, получил специальность математик-программист.
Получил специальность техник-программист.

Добавлено через 1 минуту
Цитата Сообщение от dcc0 Посмотреть сообщение
Перекладываем в псевдокод.
Обычно проще сразу на своём любимом языке писать, чем на псевдокоде.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
04.02.2025, 18:47
Цитата Сообщение от Shamil1 Посмотреть сообщение
Когда закончил техникум, получил специальность математик-программист.
Получил специальность техник-программист.
"Техник" опустил как само собой разумеющейся, но после Ваших слов засомневался, не ошибаюсь ли на счет математика. Лучшим доказательством был бы диплом, но его быстрей всего не сохранил, тем более, что после него был диплом о высшем.

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

Почему думал, что все-таки специальность была именно "математик-программист" - в памяти отложилось именно так, а кроме того получил в техникуме очень хорошую базу по математике, в т.ч. и высшей - в институте многое уже было знакомо.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
04.02.2025, 21:42
Цитата Сообщение от 755 Посмотреть сообщение
Лучшим доказательством был бы диплом
из диплома:
окончил полный курс названного техникума по специальности Программирование для автоматизированных производственных систем
присвоена квалификация техник-программист

предметы (из вкладыша):
основы информатики и вычислительной техники
общая электротехника
основы электроники и микроэлектроники
основы микропроцессорной техники
алгоритмические языки и программирование для гибких автоматизированных производственных систем
операционные системы
основы автоматизации технологических процессов и проектно-конструкторских работ
технология и оборудование гибких производственных систем
технические средства систем автоматизированного проектирования (САПР)
программно-информационные комплексы автоматизированных производственных систем
эксплуатация пакета прикладных программ для выпуска конструкторской документации
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
05.02.2025, 09:52
Цитата Сообщение от Shamil1 Посмотреть сообщение
из диплома:
окончил полный курс названного техникума по специальности Программирование для автоматизированных производственных систем
присвоена квалификация техник-программист
Подчеркиваю, я с Вами не спорю, просто есть вероятность, что могу и не ошибаться.

Думаю, что программа для всех Приборостроительных техникумов была единой.- вряд ли в разных Приборостроительных техникумах специальности по программированию различались.
И возможно год образования имеет значение для формулировки. Судя по Вашему списку предметов мои годы учебы в техникуме были раньше: 1974-1979. Быстрей всего даже предмета "операционные системы" у нас не было и практически данная тема не рассматривалась (даже не уверен, что вообще ее изучали), не говоря уже о микропроцессорной технике (когда у нас в техникуме еще была только ламповая)
И ведь мне попалась цитата из ссылки на источники СССР (причем даже из намного более поздних лет).

Повторюсь, не спорю, просто допускаю, что возможно со временем программа могла поменяться.
Ps.
Подумал, где-то должна быть копия трудовой книжки. Будет время, ради интереса поищу. М.б. там окажется информация.
0
05.02.2025, 16:32

Не по теме:

Ностальгия приятна, но совершенно бесплодна

0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
05.02.2025, 17:59
Цитата Сообщение от Igor3D Посмотреть сообщение
Ностальгия
Это не ностальгия, так как диплом не мой. Я закончил МФТИ.

Не по теме:

Помню диалог с военкомом на призывной комиссии:
- куда собираешься поступать?
- физтех
- физкультурный техникум? молодец!

з.ы. А вот это - ностальгия :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2025, 17:59

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

Алгоритмическая задача из вступительного экзамена
Есть задача, которую мне не получается осилить. Имеется блок схема (рисунок) далее текст задания: Лирика: Сразу не...

Аппаратно-программный комплекс имитации мышления
Разрабатываю некую систему (аппаратно-программный комплекс) имитации мышления (сокращённо СИМ). Как задачу минимум решил сконцентрироваться...

Помогите, пожайлуста, с примерами алгоритмически нерешаемых задач
Здравсвуйте!Помогите пожайлуста с примерами алгоритмически нерешаемых задач?Какие это имеено и как примерно можно их решить Заранее...

Вывести алгоритмически формулу в общем виде для цикла
Всем хай! Сходу к делу! Есть такой фрагмент кода (пусть на С++): cin >> i; int a, b, c; a = b = c = 0; for(int k = 1; k <= i;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru