1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

本题要求模拟 BPEBPEBPE 的迭代合并过程。

初始时,字符串 SSS 中的每个字符都是一个独立的 TokenTokenToken。每一轮操作分为三步:

  1. 统计当前序列中所有相邻 TokenTokenToken 对的出现次数。
  2. 找到出现频率最高的相邻对。

P4938.第2题-LLM 基石 - BPE 分词算法模拟

    1000ms Tried: 160 Accepted: 56 Difficulty: 5 所属公司 : 华为
    算法与标签>哈希表

题目内容

某大型语言模型(LLMLLMLLM)无法直接理解文本,它需要将文本切分成一个个“TokenTokenToken”,最常用的分词算法是 BPE(ByteBPE(ByteBPE(Byte PairPairPair EncodingEncodingEncoding)。

BPEBPEBPE 的核心思想是:迭代合并最高频的相邻字符对。

例如,给定初始字符串 “hhh uuu ggg hhh uuu ggg” 中,“uuu” 和 “ggg” 相邻出现了两次,频率最高,合并后为 “hhh ugugug hhh ugugug”。

给定一个初始的字符串 SSS(由小写英文字母组成)和一个整数 KKK(最大合并次数),请模拟 BPEBPEBPE 算法的 KKK 次迭代过程,输出最终的 TokenTokenToken 序列。

迭代规则

在每一轮迭代中:

  1. 统计频率:统计当前序列中所有相邻 Token 对的出现频率。

  2. 选择最优对:找出频率最高的相邻对。

  • Tie−breakingTie-breakingTie−breaking (平局处理) :如果存在多个频率相同的最高频对,选择字典序最小的那一对(例如:(a,b)(a,b)(a,b) 比 (c,d)(c,d)(c,d) 小;(a,b)(a,b)(a,b) 比 (a,c)(a,c)(a,c) 小)。
  • 终止条件:如果最高频率为 111(即所有相邻对都只出现一次),或者没有相邻对,则提前终止迭代。
  1. 合并:将序列中所有出现的“最佳对”合并为一个新的 TokenTokenToken。合并时采用从左到右贪心原则(即遇到匹配就合并,跳过下一个,继续扫描)。

输入描述

  • 第一行:包含一个整数 K(0≤K≤100)K(0 ≤ K ≤ 100)K(0≤K≤100),表示最大合并次数。

  • 第二行:包含一个字符串 SSS,由小写英文字母组成。

    • 注意:初始状态下,我们将字符串 SSS 中的每个字符视为一个独立的 TokenTokenToken。
    • SSS 的长度范围:1≤∣S∣≤10001 ≤ |S| ≤ 10001≤∣S∣≤1000

输出描述

输出一行,表示经过最多 KKK 次合并后的 TokenTokenToken 序列,TokenTokenToken 之间用空格分隔。

样例1

输入

5
aaabdaaabac

输出

aaab d aaab a c

说明

  1. 初始:aaa aaa aaa bbb ddd aaa aaa aaa bbb aaa ccc

  2. MergeMergeMerge 111: (′a′,′a′)('a','a')(′a′,′a′) 最多,序列变为 aaaaaa aaa bbb ddd aaaaaa bbb aaa ccc(注意贪心合并,前两个 aaa 合并,第三个落单)。

  3. MergeMergeMerge 222: (′aa′,′a′)('aa', 'a')(′aa′,′a′) 最多,序列变为 aabaabaab bbb ddd aaaaaaaaa bbb aaa ccc。

  4. MergeMergeMerge 333: (′aaa′,′b′)('aaa','b')(′aaa′,′b′) 最多,序列变为 aaabaaabaaab ddd aaabaaabaaab aaa ccc。

  5. 后续频率均为 111,停止。

样例2

输入

2
ababac

输出

ab ab a c

说明

  1. 初始序列:[′a′,′b′,′a′,′b′,′a′,′c′]['a', 'b', 'a', 'b', 'a', 'c'][′a′,′b′,′a′,′b′,′a′,′c′]
  2. 第1轮:
    • 相邻对: (′a′,′b′)=2('a','b')=2(′a′,′b′)=2 次,(′b′,′a′)=2('b','a')=2(′b′,′a′)=2 次,(′a′,′c′)=1('a','c')=1(′a′,′c′)=1 次。
    • 最高频是 222。(′a′,′b′)('a','b')(′a′,′b′) 和 (′b′,′a′)('b','a')(′b′,′a′) 频率相同。
    • 字典序比较:′a′<′b′'a'<'b'′a′<′b′,所以选择 (′a′,′b′)('a','b')(′a′,′b′)。
    • 合并后序列:[′ab′,′ab′,′a′,′c′]['ab', 'ab', 'a', 'c'][′ab′,′ab′,′a′,′c′]
  3. 第2轮:
  • 相邻对 (′ab′,′ab′)=1('ab','ab')=1(′ab′,′ab′)=1 次,(′ab′,′a′)=1('ab','a')=1(′ab′,′a′)=1 次...
    • 最高频均 111,触发终止条件。
  1. 最终输出:ababab ababab aaa ccc

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 55ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?