”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用递归CTE查找无向图中所有连通子图的技巧

使用递归CTE查找无向图中所有连通子图的技巧

发布于2025-04-14
浏览:810

How to Find All Connected Subgraphs in an Undirected Graph Using a Recursive CTE? 
如何找到无向图的所有连接子图

[其他。 example表:

&]1

a

c

2

bfg(a,c,c,g,h,h,l)c1
3a
4ch
5bj
6df
7ek
8i
9lh
Desired Output:
IdentifierGr_IDGr.Members
1

(a,c,g,h,l)

d2(b,d,f,j)e3(e,k)f 2 (b,d,f,j)j with with with cte_idents 作为 (( 选择Ident1作为IDENS 来自@T 联盟 选择Ident2作为IDENS 来自@T ) ,cte_pairs 作为 (( 选择Ident1,Ident2 来自@T esident1>> IDENS2 联盟 选择Ident2 AS Ident1,Ident1 AS Ident2 来自@T esident1>> IDENS2 ) ,CTE_RECURSIVE 作为 (( 选择 铸件(CTE_IDENTS.IDEN作为Varchar(8000))作为锚定 ,Ident1 ,Ident2 ,cast(','sident1','distion2',as varchar(8000)) ,1作为lvl 从 cte_pairs cte_idents.ident = cte_pairs.inder1上的cte_idents内部加入cte_idents1 联盟全部 选择 cte_recursive.anchorident ,cte_pairs.Ident1 ,cte_pairs.inden2 ,cast(cte_recursive.IdentPath cte_pairs.Ident2',as varchar(8000))作为Identath ,cte_recursive.lvl 1作为lvl 从 cte_pairs cte_recursive.ident2 = cte_pairs.inder1上的cte_recursive cte_recursive1 在哪里 cte_recursive.IdentPath不喜欢cons('%,'cte_pairs.ident2',%'as varchar(8000)) ) ,cte_recursionResult 作为 (( 选择锚定,Ident1,Ident2 来自CTE_RECURSIVE ) ,cte_cleanresult 作为 (( 选择锚定,Ident1作为Ident 来自cte_recursionResult 联盟 选择锚定,Ident2作为IDISE 来自cte_recursionResult ) 选择 cte_idents.Ident ,ca_data.xml_value为null时的情况 然后cte_idents.SERS else ca_data.xml_value结束为groupmembers ,dense_rank()over(订购 ca_data.xml_value为空的情况 然后cte_idents.SERS else ca_data.xml_value end )作为groupid 从 cte_idents 交叉应用 (( 选择CTE_CLEANRESULT.IST'' 来自cte_cleanresult cte_cleanresult.anchorident CTE_CLEANRESULT.IST )作为ca_xml(xml_value) 交叉应用 (( 选择ca_xml.xml_value.value('。','nvarchar(max)') )作为ca_data(xml_value) 在哪里 CTE_IDENTS。 通过身份订单; [2 (i) The final SELECT statement uses a combination of FOR XML路径和Cross应用于每个组的连接标识符。[&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&rank()用于为每个组分配唯一的组ID。
1(a,c,g,h,l)
2(b,d,f,j)
示例output: 3
The CTE_Idents table contains all the unique identifiers in the graph.The CTE_CleanResult table extracts the connected identifiers for each anchor identifier.
最新教程 更多>
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-17
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-17
  • 查找当前执行JavaScript的脚本元素方法
    查找当前执行JavaScript的脚本元素方法
    如何引用当前执行脚本的脚本元素在某些方案中理解问题在某些方案中,开发人员可能需要将其他脚本动态加载其他脚本。但是,如果Head Element尚未完全渲染,则使用document.getElementsbytagname('head')[0] .appendChild(v)的常规方...
    编程 发布于2025-04-17
  • Pandas删除行:基于字符串长度和多条件
    Pandas删除行:基于字符串长度和多条件
    在pandas dataframes中的条件行删除 的错误是“ keyError:keyerror:fluges的,则unye的fortive更高很高):要解决此问题,让我们探索一种有条件行删除的替代方法。) 2].index)In-place Operation:You can also per...
    编程 发布于2025-04-17
  • 触发MySQL操作的SELECT语句技巧
    触发MySQL操作的SELECT语句技巧
    在选择语句上触发mySQL action Alternative SolutionHowever, there is a potential workaround for this unique scenario:Create Stored Procedures for SELECTs:Defin...
    编程 发布于2025-04-17
  • 如何根据特定列值整理关联数组行?
    如何根据特定列值整理关联数组行?
    在使用由子阵列组成的关联阵列工作时,按列值通常是基于特定列值重新组织数据的必要条件。这允许更轻松的数据检索和分析。 假设我们有以下格式的子阵列数组: 'a'=> ['id'=> 20,'名称'=>'chimpanzee'], ...
    编程 发布于2025-04-17
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-04-17
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] 剩余_size- = buf_size lines = buffer.split('\ n'....
    编程 发布于2025-04-17
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-17
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-04-17
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-17
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-17
  • Python中何时用"try"而非"if"检测变量值?
    Python中何时用"try"而非"if"检测变量值?
    使用“ try“ vs.” if”来测试python 在python中的变量值,在某些情况下,您可能需要在处理之前检查变量是否具有值。在使用“如果”或“ try”构建体之间决定。“ if” constructs result = function() 如果结果: 对于结果: ...
    编程 发布于2025-04-17
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-17
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。$("#map").css({ marginT...
    编程 发布于2025-04-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3