news 2026/4/15 5:43:15

郭其先生利用DeepSeek实现的PostgreSQL递归CTE实现DFS写法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
郭其先生利用DeepSeek实现的PostgreSQL递归CTE实现DFS写法

测试用表

CREATETABLEtree_nodes(idINTPRIMARYKEY,parent_idINTREFERENCEStree_nodes(id),nameVARCHAR(50));INSERTINTOtree_nodesVALUES(1,NULL,'根节点'),(2,1,'子节点1'),(3,1,'子节点2'),(4,2,'孙子节点1'),(5,2,'孙子节点2'),(6,3,'孙子节点3');

使用递归 CTE 实现 DFS:

WITHRECURSIVE dfsAS(-- 锚点:从根节点开始SELECTid,parent_id,name,1ASdepth,ARRAY[id]ASpath,ARRAY[name]::text[]ASpath_names,FALSEASis_cycleFROMtree_nodesWHEREparent_idISNULLUNIONALL-- 递归部分:深度优先遍历SELECTtn.id,tn.parent_id,tn.name,d.depth+1,d.path||tn.id,d.path_names||tn.name,tn.id=ANY(d.path)ASis_cycleFROMtree_nodes tnJOINdfs dONtn.parent_id=d.idWHERENOTd.is_cycle-- 防止循环)-- 按深度优先顺序输出SELECTid,parent_id,name,depth,path,path_namesFROMdfsORDERBYpath;

使用栈模拟 DFS

WITHRECURSIVE dfs_stackAS(-- 初始栈:包含根节点SELECT1ASstep,idAScurrent_node,name,ARRAY[id]ASstack,ARRAY[]::INT[]ASvisited,'visit'ASactionFROMtree_nodesWHEREparent_idISNULLUNIONALL-- 模拟栈操作:弹出、压入SELECTd.step+1,CASE-- 如果有未访问的子节点,访问第一个WHENEXISTS(SELECT1FROMtree_nodes tnWHEREtn.parent_id=d.current_nodeANDtn.id!=ALL(d.visited))THEN(SELECTtn.idFROMtree_nodes tnWHEREtn.parent_id=d.current_nodeANDtn.id!=ALL(d.visited)ORDERBYtn.idLIMIT1)-- 否则回溯ELSEd.stack[array_length(d.stack,1)-1]END,tn.name,CASE-- 访问新节点:压栈WHENEXISTS(SELECT1FROMtree_nodes tnWHEREtn.parent_id=d.current_nodeANDtn.id!=ALL(d.visited))THENd.stack||(SELECTtn.idFROMtree_nodes tnWHEREtn.parent_id=d.current_nodeANDtn.id!=ALL(d.visited)ORDERBYtn.idLIMIT1)-- 回溯:出栈ELSEd.stack[1:array_length(d.stack,1)-1]END,d.visited||d.current_node,CASEWHENEXISTS(SELECT1FROMtree_nodes tnWHEREtn.parent_id=d.current_nodeANDtn.id!=ALL(d.visited))THEN'push'ELSE'pop'ENDFROMdfs_stack dLEFTJOINtree_nodes tnONtn.id=d.current_nodeWHEREarray_length(d.stack,1)>0-- 栈不为空时继续)SELECTstep,current_node,name,stack,action,visitedFROMdfs_stackORDERBYstep;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 15:02:02

HY-MT1.5-7B部署教程:混合语言场景翻译质量提升实战

HY-MT1.5-7B部署教程:混合语言场景翻译质量提升实战 1. 引言 随着全球化进程的加速,跨语言交流需求日益增长,尤其是在多语言混杂、方言与标准语并存的复杂语境中,传统翻译模型往往难以准确理解上下文语义和语言风格。为应对这一挑…

作者头像 李华
网站建设 2026/4/9 8:06:05

小模型大作为:HY-MT1.5-1.8B应用案例集锦

小模型大作为:HY-MT1.5-1.8B应用案例集锦 在AI翻译领域,大模型往往被视为性能保障的代名词。然而,随着边缘计算和实时交互需求的爆发式增长,轻量高效的小模型正成为落地场景中的“隐形冠军”。腾讯开源的混元翻译模型 1.5 版本&a…

作者头像 李华
网站建设 2026/4/9 10:31:24

混元翻译1.5格式化输出:Markdown文档翻译

混元翻译1.5:腾讯开源的高性能多语言翻译模型 1. 引言 随着全球化进程加速,跨语言沟通需求日益增长,高质量、低延迟的机器翻译技术成为智能应用的核心基础设施。在此背景下,腾讯推出了混元翻译大模型1.5版本(HY-MT1.5…

作者头像 李华
网站建设 2026/4/14 19:24:08

混元翻译1.5实战:边缘设备部署与实时翻译案例详解

混元翻译1.5实战:边缘设备部署与实时翻译案例详解 随着多语言交流需求的爆发式增长,高质量、低延迟的翻译系统成为智能硬件和跨语言服务的核心组件。腾讯开源的混元翻译大模型 HY-MT1.5 系列,凭借其在翻译质量、多语言支持和边缘部署能力上的…

作者头像 李华
网站建设 2026/4/9 16:29:51

HY-MT1.5-7B术语库版本管理:更新策略设计

HY-MT1.5-7B术语库版本管理:更新策略设计 1. 背景与问题提出 随着多语言内容在全球范围内的快速传播,高质量、可定制的机器翻译系统成为企业出海、跨语言交流和本地化服务的核心基础设施。腾讯开源的混元翻译大模型 HY-MT1.5 系列,包含 HY-…

作者头像 李华
网站建设 2026/4/10 3:02:33

庞鹤鸣的气功理论怎么样?现代人该怎么判断或认识?

我帮你把道AI这段满是专业术语的评价,翻译成普通人能听懂的大白话,核心逻辑和结论不变:一、 核心定位:没完成“终极升级”的过渡理论道AI给庞鹤鸣理论的最终定性是:东方传统气功智慧,试图向现代科学靠拢的“…

作者头像 李华