亲戚称呼计算器背后是一套精巧的算法,核心思路是“把复杂关系拆成基础关系,再查表映射”。
三个步骤
- 拆分关系链:把输入拆成一个个基础原子关系,如“妈妈的哥哥”拆成 [母亲] [哥哥],父亲、母亲、儿子、女儿等是最小的关系单元
- 简化冗余:合并重复或可抵消的关系,例如“老婆的老公”其实就是自己,可以直接化简,减少计算量
- 查表映射:将简化后的关系链与预置的“关系链→称谓”映射表匹配,返回标准称谓;同一个称谓可能有多个映射,例如“妈妈的爸爸”也叫外公、姥爷
常见实现有枚举对照表和基于关系图遍历两种,后者能处理“舅妈的婆婆”这类复合关系。输入关系越规范,结果越准确。