这个问题可以简化为图论中的一个问题,在图论中,您可以在图中找到所有连接节点组.

解决此问题的有效方法是执行“泛洪填充”算法,该算法本质上是递归呼吸首次搜索.这个wikipedia entry描述了洪水填充算法以及它如何应用于解决查找图的连通区域的问题.

要查看如何将原始问题转换为图表上的问题:将每个条目(例如“Server1”,“Server_1”等)作为图表上的节点.当且仅当它们是同义词时,用边连接节点.如果有足够的内存,矩阵数据结构特别适合跟踪边缘.否则,像地图这样的稀疏数据结构将起作用,尤其是因为同义词的数量可能会受到限制.

> Server1是节点#0

> Server_1是节点#1

> Server_2是节点#2

然后edge [0] [1] = edge [1] [0] = 1,表示节点#0和#1之间存在边缘(这意味着它们是同义词). edge [0] [2] = edge [2] [0] = 0,表示Server1和Server_2不是同义词.

复杂性分析

创建这种数据结构非常有效,因为单个线性传递可以查找字符串到节点编号的映射就足够了.如果将字符串的映射存储到字典中的节点编号,那么这将是O(n log n)步骤.

执行泛洪填充是O(n),您只访问图表中的每个节点一次.所以,算法都是O(n log n).

php 查找同义词,php – 同义词查找器算法相关推荐

  1. python中顺序查找法例子_Python查找算法(一)------ 顺序查找

    查找算法  --  简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表(Search Table):由用一类型的数据元素构成的集合 关健字( ...

  2. 数据结构和算法系列13 五大查找之哈希查找

    原文地址 http://www.cnblogs.com/mcgrady/p/3294871.html 数据结构和算法系列13 五大查找之哈希查找 这一篇要总结的是五天查找的最后一篇,哈希查找,也称为散 ...

  3. python实现顺序查找和哈希查找算法

    顺序查找 顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法,顺序查找是最简单的搜索算法,其实现如下: def sequential_search(items, item):for i i ...

  4. 查找算法之二分查找(对半查找)

      当有序表采用顺序存储时,可以采用二分查找的方式查找指定关键字的元素.   二分查找的基本思想是选择表中某一位置 i i i的元素 A i A_i Ai​,设该元素的关键字为 K i K_i Ki​ ...

  5. php顺序查找法,php二分查找、顺序查找算法

    摘要:php查找数组元素有内置的函数array_search和in_array,顺序查找对数组排序没有要求,二分查找法要求数组必须是一个有序数组!1.顺序查找function sequence_sea ...

  6. elasticsearch遇到的问题(一) 底层修改同义词典synonyms.txt未生效,将同义词加到分词器也未生效

    1.上传更新ik分词库,同名词库,更新上传同义词 理解错热更新的意思以为不需要重启,没有重启整个集群,导致没有生效. https://help.aliyun.com/document_detail/1 ...

  7. 查找 之 散列表查找(哈希表)

    基础概念 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key).这里对应关系f称为散列函数,又称为哈希(Hash)函数. 采用散列技术将 ...

  8. MySQL 的索引、执行计划、优化器算法

    SQL处理流程 INDEX 索引 索引介绍 索引:是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键key,索引通过存储引擎实现: 索引相当于一本书的目录,可以优化查询. 优点: 索引 ...

  9. “查找”学习提纲(二)——树型查找和散列查找

    文章目录 前言 代码模板 二叉排序/查找/搜索树查找 适用 性能 代码模板 折半查找和二叉排序树查找总结 平衡二叉(排序)树/AVL树 构造相应层数的树至少需要的结点数 平衡调整的过程 平衡调整的类型 ...

  10. 14.查找概论与顺序查找

    一.查找概论 1.查找:即依据给定的某个值,在查找表中确定一个其keyword等于给定值的数据元素(或纪录).若表中不存在keyword等于给定值的纪录.则称查找不成功,此时查找的结果可给出一个&qu ...

最新文章

  1. CircleProgressView
  2. TCP为什么需要三次握手
  3. java 内存映射文件 主要应用_VC++中使用内存映射文件处理大文件(3)
  4. 【玩转cocos2d-x之三十七】粒子系统的加载优化
  5. Ajax拿取html格式数据
  6. 使用C#为.NET Interactive开发自定义扩展
  7. 混合型面向对象语言和纯面向对象语言
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​
  9. Entity Framework -- 使用类别字段的实体继承关系
  10. 筛选索引--filter indexs
  11. python配色方案_python 生成18年写过的博客词云
  12. c语言计算器小程序,计算器程序完整代码
  13. 软件工程—01可行性研究报告
  14. Linux:chattr、lsattr、chage、history和/etc/login.defs解读
  15. 从苹果封杀Epic与特斯拉硬刚拼多多看新时代的渠道产品战
  16. 高德地图加载不出来,有高德的logo,但地图一片空白
  17. jks文件转换成ctr,key文件
  18. Html标签——table表格
  19. 神经网络基础学习小记
  20. Android的媒体播放器——简易视频播放器(详解)

热门文章

  1. 水处理过滤器:常见水处理过滤器的种类大全
  2. Base64编码的图片在网页中的显示问题的解决
  3. 复印机扫描显示服务器链接错误代码,如何开启扫描失败后显示网络错误代码
  4. 格林公式、高斯公式及斯托克斯公式的理解及相互关系
  5. 深入理解之border属性(第一期)
  6. vue常用的事件修饰符
  7. 嵌入式设备引入机器学习:有eIQ就够了!
  8. linux:硬链接和软链接
  9. java表白代码,神操作!
  10. nas怎么做网站服务器,NAS存储搭建网站服务器