跳到主要内容

面向 GenAI 的算法和数据结构

这绝对是一个奖励课程,因为将其纳入 AI 代理的学习计划是一种变态行为。 这些知识对大约 10% 从头开始编写代理的学生有用。 但是,我相信算法和数据结构 (АиСД) 的知识将为您带来很多好处——在架构思维、高级系统设计、复杂工作流程和多代理优化方面。

我们分析了 AI 代理中使用的 11 种最流行的算法和数据结构。

建议

如果您遇到困难,请使用 ChatGPT:“像我 5 岁时一样向我解释这个算法”

步骤

0. 学习材料的选项

  • 我不想花费超过 15 分钟 - 观看一个视频并离开此模块

  • 推荐路径 - 观看一个您选择的理论,使用 ChatGPT 作为老师解决一个问题

图和遗传算法需要发展观察力,但不是强制学习的。

ChatGPT 的提示词

用于解决问题的提示词:

你是一位导师,帮助学生解决 LeetCode 上的问题。 使用苏格拉底方法:不要给出现成的答案,而是通过问题引导学生找到解决方案。 帮助理解问题条件,引导正确的策略,分析极端情况,选择数据结构,并逐步引导解决方案。 提供最少的例子,要求学生解释他们的推理并检查它们。 目标是培养思维,而不仅仅是解决问题。

从以下短语开始:“告诉我你如何理解这个问题,以及你有什么初步的想法?”

用于解释问题条件或算法的提示词:

像给我 5 岁时一样解释主题。 使用简单的词语、隐喻、来自日常生活的类比(玩具、糖果、盒子、卡通片)。 避免使用技术术语,除非你非常简单地解释它们。 想象一下,你正在讲故事或和我一起玩游戏,并且希望我了解发生了什么。

0.1. 我们每天使用的 10 种关键数据结构

我们每天使用的 10 种关键数据结构 - 8:42 视频

1. 链表

在 AI 代理中在哪里使用?
  • 您可以使用链表来存储和处理 AI 代理中的数据。 例如,您可以使用链表来存储对话历史记录、任务列表或存储有关主题领域的数据。

视频资源:

LeetCode 任务:

2. 数组

在 AI 代理中在哪里使用?

用于处理聊天消息、存储嵌入和模型特征向量。 允许快速处理批量对话。 了解数组是高效 AI 系统的基础!

视频资源:

3. 哈希表

在 AI 代理中在哪里使用?

就像一个带有钥匙抽屉的魔法柜子:我们快速找到常见问题的答案(例如“如何重置密码?”),记住对话的上下文(“你问过天气”),或者缓存流行的食谱。 帮助工作更快,而不是在巨大的玩具篮中搜索!

视频资源:

LeetCode 任务:

4. 队列

在 AI 代理中在哪里使用?

就像出租车调度员 🚖:我们对 API 请求进行排序,在负载下缓冲消息,并计划代理任务。 保证处理的稳定性和一致性——可扩展系统的基础!

视频资源:

LeetCode 任务:

5. 递归

在 AI 代理中在哪里使用?

就像俄罗斯套娃 🪆:我们处理嵌套对话(“如果...”),遍历场景树(多级菜单),并将复杂请求分解为多个部分。 允许代理逐步“思考”——从一般到细节,同时保持推理链的上下文!

例子:

  • 处理答案中的澄清问题
  • 生成依赖任务链(计划程序)
  • 递归分析来自 API 的 JSON 结构
  • 根据条件自动分支对话
  • 构建知识层次结构(例如,主题 → 子主题 → 事实)

视频资源:

LeetCode 任务:

6. 分而治之

在 AI 代理中在哪里使用?

就像瑞士军刀 🔪:我们将复杂任务(分析 100 多页的 PDF、生成报告)分解为子任务,并行处理请求的各个部分,并将结果合并。 允许代理“消化”千兆字节的数据而不会过载——您处理大数据的秘诀!

例子:

  • 并行处理文档
  • 用户目标的分层分析
  • 通过并行优化响应时间
  • 递归细化请求的细节
  • 将代码划分为模块(NLU → 逻辑 → 响应)

视频资源:

LeetCode 任务:

7. 滑动窗口

在 AI 代理中在哪里使用?

就像移动雷达 🚨:我们分析流数据(聊天历史记录、API 日志),实时查找模式,并管理 RAG 搜索的上下文窗口。 允许代理在不重新加载的情况下“滑动”数据——您处理长对话的关键!

例子:

  • 在用户请求中搜索重复项
  • 动态缓存上下文(最近 N 条消息)
  • 将长文本分块处理以进行 RAG
  • 监控流数据中的异常
  • 通过“相关性窗口”优化 LLM 令牌

视频资源:

LeetCode 任务:

8. 双指针

在 AI 代理中在哪里使用?

就像同步扫描仪 🔍:我们比较答案的版本,从两端分析对话历史记录,并优化 RAG 搜索。 允许代理以 O(n) 找到完美的匹配——您获得即时答案的工具!

例子:

  • 比较不同版本的提示词
  • 从头/尾分析聊天上下文
  • 搜索用户数据中的矛盾
  • 通过双重搜索优化 RAG
  • 折叠重复消息

视频资源:

LeetCode 任务:

9. Map-Reduce

在 AI 代理中在哪里使用?

就像工业联合收割机 🌾:我们处理 TB 级的数据(聊天日志、Web 抓取),在节点之间分配任务,并聚合结果。 在线研究代理使用它来并行分析 100 多个来源——您处理大数据的关键!

例子:

  • 并行处理数百万个请求
  • 聚合来自不同 API 的数据
  • LLM 令牌使用情况统计
  • 分析大型错误日志
  • 在分布式数据上训练模型

视频资源:

LeetCode 任务:

E10. 图 ✦

在 AI 代理中在哪里使用?

图是复杂交互的基础:我们通过树状结构管理对话场景,分析实体之间的关系(人-事件-地点),并优化请求处理链。 用于基于知识图的推荐系统和代理工作流程中循环依赖的检测。

例子:

  • 场景的对话树
  • 分析聊天中的社交联系
  • 优化处理路线
  • 通过知识图进行推荐
  • 检测任务链中的循环

视频资源:

LeetCode 任务:

E11. 优化算法 ✦✦