mirror of
https://github.com/krahets/hello-algo.git
synced 2026-10-31 20:54:49 +08:00
Add the AI agents and algorithm learning Q&A to all five language editions. Related to #1928.
33 lines
7.4 KiB
Markdown
33 lines
7.4 KiB
Markdown
# Резюме
|
||
|
||
### Ключевые выводы
|
||
|
||
- Алгоритмы повсеместно присутствуют в нашей повседневной жизни и не являются недосягаемыми сложными знаниями. На самом деле мы уже освоили множество алгоритмов, которые помогают решать различные жизненные задачи.
|
||
- Принцип поиска в словаре соответствует алгоритму двоичного поиска. Двоичный поиск иллюстрирует важную идею алгоритмов «разделяй и властвуй».
|
||
- Процесс сортировки карт в колоде очень похож на алгоритм сортировки вставками, который хорошо подходит для сортировки небольших наборов данных.
|
||
- Процесс выдачи сдачи по своей сути является жадным алгоритмом, в котором на каждом этапе принимается наилучшее на данный момент решение.
|
||
- Алгоритм представляет собой набор инструкций или шагов, предназначенных для решения конкретной задачи в ограниченное время, а структура данных - это способ организации и хранения данных в компьютере.
|
||
- Структуры данных и алгоритмы тесно связаны. Структуры данных являются основой для алгоритмов, а алгоритмы оживляют структуры данных.
|
||
- Структуры данных и алгоритмы можно сравнить с конструктором: детали конструктора представляют данные, их форма и способы соединения - структуры данных, а этапы сборки конструктора соответствуют алгоритмам.
|
||
|
||
### Вопросы и ответы
|
||
|
||
**Q**: Я программист, и я никогда не использовал алгоритмы для решения задач в своей повседневной работе, поскольку часто используемые алгоритмы уже встроены в языки программирования и их можно использовать напрямую. Означает ли это, что задачи, с которыми мы сталкиваемся на работе, не требуют применения алгоритмов?
|
||
|
||
Если сравнить конкретные профессиональные навыки с приемами в боевых искусствах, то базовые дисциплины скорее напоминают «внутреннюю силу».
|
||
|
||
Я считаю, что изучение алгоритмов (и других базовых дисциплин) важно не для того, чтобы реализовывать их с нуля в работе, а для того, чтобы на основе полученных знаний принимать профессиональные решения и давать оценки при решении задач, тем самым повышая общее качество работы. Простой пример: каждый язык программирования имеет встроенные функции сортировки.
|
||
|
||
- Если бы мы не изучали структуры данных и алгоритмы, то, получив любые данные, возможно, просто передали бы их этой функции сортировки. Все работает гладко, производительность хорошая, и на первый взгляд проблем нет.
|
||
- Однако если мы изучили алгоритмы, то знаем, что временная сложность встроенной функции сортировки составляет $O(n \log n)$. Если же данные представлены целыми числами фиксированной разрядности, например номерами студентов, то можно использовать более эффективный метод поразрядной сортировки, снизив временную сложность до $O(nk)$ , где $k$ - это количество разрядов, а при больших объемах данных выиграть во времени, затратах и пользовательском опыте.
|
||
|
||
В инженерной практике множество задач трудно решить оптимальным образом, и многие из них решаются «как-то». Сложность задачи зависит как от ее природы, так и от уровня знаний и опыта человека, который ее анализирует. Чем более полными знаниями и большим опытом обладает человек, тем глубже он может проанализировать проблему и тем изящнее может быть ее решение.
|
||
|
||
**Q**: Теперь, когда мы поручаем ИИ-агентам писать почти весь код, нужно ли нам по-прежнему изучать алгоритмы?
|
||
|
||
Приведу слова Ли Му: «Агент — это усилитель способностей, то есть способности ×10, а не способности +10».
|
||
|
||
Если ИИ усиливает наши способности, то важны и сами «способности», которые он умножает. На мой взгляд, особенно стоит развивать две из них. Первая — умение выражать свои мысли, прежде всего при работе с ИИ: ясно формулировать цель, давать необходимый контекст и вовремя корректировать направление. Объясняя задачу ИИ, мы и сами лучше в ней разбираемся. Вторая — базовые знания. ИИ может дополнить детали, но основные понятия нужно понимать самому, чтобы задавать вопросы по существу, отличать верное от неверного и превращать его ответы в полезные результаты.
|
||
|
||
Одна из особенностей ИИ в том, что, в отличие от прежних инструментов, у него нет чётких границ возможностей. Он немного похож на воду: в руках разных людей он принимает разные формы. Чем выше способности человека и лучше его вкус, тем заметнее усиливающий эффект ИИ.
|