华为机试-第二题

2023-11-17

查找知识图谱中的实例知识

知识图谱是一种结构化的语义网络,用于描述物理世界中的概念及其实例的相关关系。可以把知识图谱看成是一种有向图,图中的点是概念或实例,图中的边是概念及其实例的相关关系。

现定义一种简单的知识图谱

概念:包括父概念及其子概念,通过subClassOf关系关联,父子概念可以有多个层级;
实例:仅和概念之间通过instanceOf关系关联:
关系:以三元组的形式表示,三元组是一个以空格为成员间分隔符的字符串。例如"student subClassOf person"表示student是person的子概念,“apple instanceOf fruit"表示apple是概念fruit的实例。
给定一个知识图谱,请编写一个方法,可以根据一个概念查找其所有的实例。如果一个概念拥有子概念,那么返回的结果需要包含其所有子概念的实例;如果输入的概念没有实例,则返回字符串"empty”(说明:输出字符串文本不需要包含引号)。

给定的图谱满足以下限制:
1、有向图中不存在环路
2、所有点和关系的定义对大小写敏感

输入描述:
输入第1行,表示图谱中关系的数量n,取值范围[1,10000]
从第2行到n+1行,表示图谱中的关系,每一行是一个关系三元组第n+2行,表示待查找的元节点,是关系三元组中存在的点。
每行字符的长度不超过100。

3
student subClassOf person 
Tom inslenceOf student 
Marry instanceOf person 
person

输出描述
按字典序升序排列的字符串数组,其内容是概念及其子概念的所有实例。

Marry Tom 

代码

class Tree:
    def __init__(self, x):
        self.instance = []
        self.subclass = None
        self.id = x

def func():
    data = [
        'student subClassOf person',
        'Tom instanceOf student',
        'Marry instanceOf person',
        'chriden subClassOf student',
        'Bob instanceOf chriden',
        'person'
    ]
    # data = [
    #     'apple instanceOf fruit',
    #     'fruit'
    # ]
    data_dict = {}
    for i in range(len(data) - 1):
        left, mid, right = data[i].split(' ')

        if mid == 'subClassOf':  # 那么left 和 right 两个肯定都是概念,父子关系
            if right not in data_dict.keys():
                right_tree = Tree(right)
                data_dict[right] = right_tree
            if left not in data_dict.keys():
                left_tree = Tree(left)
                data_dict[left] = left_tree
            data_dict[right].subclass = data_dict[left]

        if mid == 'instanceOf':
            if right not in data_dict.keys():
                right_tree = Tree(right)
                data_dict[right] = right_tree
            data_dict[right].instance.append(str(left))
    head = data_dict[data[-1]]
    result = []
    while(head):
        result += head.instance
        head = head.subclass
    result = sorted(result)
    print(result)
if __name__ == '__main__':
    func()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为机试-第二题 的相关文章

随机推荐

  • Flutter开发之——Icon图标

    一 概述 Icon是支持material design的一系列图标 Icon类似于iconfont即字体图标 它是将图标做成字体文件 然后通过指定不同的字符显示不同图片 二 Icon说明 2 1 说明 在字体文件中 每一个字符都对应一个位码
  • Android内存管理

    Android内存泄露 全解析和处理办法 http www jianshu com p bf159a9c391a
  • 产品运行所需的信息检索失败。请重新安装xshell

    产品运行所需的信息检索失败 请重新安装xshell 很久没有应用Xshell进行远程服务器连接了 由于需要应用远程云计算资源 因此有需要使用这个软件 但是在今天的使用过程中出现了 问题 打开Xshell之后 找到可执行文件之后 点击运行 管
  • 【CQOI 2015】任务查询系统

    题目 传送门 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统 而你被安排完成其中的查询部分 超级计算机中的任务用三元组 Si Ei Pi 描述 Si Ei Pi 表示任务从第 Si 秒开始 在第 Ei 秒后结束 第 Si
  • 电脑开不了机启动不了

    故障现象 解决办法 1 先不要操作别的 首先想想开机之前做过什么操作 更新过什么 补丁 漏洞 软件 还是别的等等 2 重启操作系统 在开机的时候不停地按F8键 如果不停地按之后出现了一个黑底白字的菜单 可以最后一次配置试试 不行可以进入系统
  • 服务器CPU经常跑高是什么原因

    服务器在使用过程中 经常会遇见这样的情况 在长时间使用之后 系统运行会越来越慢 卡的情况 查询后台进程 CPU占用以超过90 那么高的CPU使用率 都是会由哪些因素导致的呢 1 散热故障 如机房散热不足 温度过热或者驱动故障 导致温度太高
  • html新闻滚动效果,js实现滚动新闻效果

    code js cn a display block font size 15px line height 18px text decoration none color 333 font family Arial font size 12
  • 机器学习-泛化能力笔记

    1 什么是泛化能力 在机器学习方法中 泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力 在实际情况中 我们通常通过测试误差来评价学习方法的泛化能力 2 泛化误差的定义 大家马上应该发现 这个不是损失函数的期望吗 没错 泛化误差就是所学
  • C++多线程(七):unique_lock详解

    目录 unique lock取代lock guard unique lock的第二个参数 std adopt lock std try to lock std defer lock unique lock的成员函数 成员函数lock 成员函
  • 多线程(十):总结

    本章用来处理一下之前遗漏的很多问题 在多线程那一章 很多常见面试题都没有讲 这里再来补充一下 HashTable HashMap ConcurrentHashMap 之间的区别 HashTable HashMap ConcurrentHas
  • BurpSuite武器库打造之环境搭建和API介绍(上)

    0x00前言 在使用Burp Suite 以下简称Burp 来开展渗透工作的途中可能需要验证一些脑洞大开的想法 但Burp自带的功能可能无法满足你的需求 于是你迫切需要一个高度定制化的插件来实现这个功能 经查阅你得知除了Java还可以通过配
  • 无法清空剪切板,另一程序正在使用剪切板,无法复制东西了

    这种情况一般都是因为 有道或者其他翻译软件在你复制过程中不断把东西添加到剪切板中导致你无法继续添加新的东西到剪切板中 策略 关闭有道词典 在设置中将复制查词 取消即可
  • DBeaver连接MySQL提示“Public Key Retrieval is not allowed”的解决办法

    一 问题描述 一段时间没使用DBeaver 再次打开DBeaver连接MySQL提示 Public Key Retrieval is not allowed Public Key Retrieval is not allowed 不允许进行
  • HIVE简单介绍和了解

    用于解决海量日志数据的分析 hive是基于Hadoop的一个数据仓库工具 可以将结构化的数据文件映射为一张数据库表 并提供完整的sql查询功能 可以将sql语句转换为MapReduce任务进行运行 其优点是学习成本低 可以通过类SQL语句快
  • Linux开发工程师是吃青春饭的吗?

    Linux开发工程师怎么样 都说程序员是吃青春饭 Linux开发工作35岁之后还能做吗 坦白说 如果程序员在35岁的时候 工作经验 与刚毕业的时候差别不大 则其不可替代性就不高 很难在大龄时具备足够竞争力 大龄程序员 跟应该以专业洞识 理解
  • InterBase 6.5的新特性 (转)

    InterBase 6 5的新特性 转 more InterBase 6 5的新特性XML namespace prefix o ns urn schemas microsoft com Office office gt 作者 Bill T
  • Luat 功能开发教程(十四) 延时和定时器

    目录 延时和定时器 简介 API说明 实现流程 创建 消亡 自动消亡 手动消亡 判断定时器状态 知识拓展 示例 常见问题 相关资料以及购买链接 延时和定时器 简介 在luat脚本程序中 往往需要用到延时和等待等逻辑功能 例如 你想得到每隔3
  • 【el-time-picker设置默认值】Cannot read properties of undefined (reading ‘hour‘)

    需求 设置默认时间为2 0 0的时间选择器 产生报错的写法
  • 必填校验设置‘change‘, ‘blur‘同时起作用

    必填校验设置 change blur 同时起作用 rules seaAreaName required true message 请输入海区 trigger change blur
  • 华为机试-第二题

    查找知识图谱中的实例知识 知识图谱是一种结构化的语义网络 用于描述物理世界中的概念及其实例的相关关系 可以把知识图谱看成是一种有向图 图中的点是概念或实例 图中的边是概念及其实例的相关关系 现定义一种简单的知识图谱 概念 包括父概念及其子概