魔鬼训练第四天作业

本文介绍了图与网络的基础概念,包括邻接矩阵的绘制方法及无向网络的定义。此外,还详细阐述了树和m叉树的概念,以及如何通过具体的例子来理解这些抽象的数据结构。

老师原文链接:
11. 图与网络

11.5 作业
1、画出该图的邻接矩阵

在这里插入图片描述
E = [ 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 ] \mathbf{E}=\left[ \begin{matrix} 0 & 1 & 1 &1 \\1 & 0 &1 & 0 \\ 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 \end{matrix}\right] E=0111101011011010

2、定义无向网络.
Definition 11.3 An undirected net is a tuple G = ( V , w ) G = (\mathbf{V}, w) G=(V,w) where V \mathbf{V} V is the set of nodes, and w : V × V → R w : \mathbf{V} \times \mathbf{V} \to \mathbb{R} w:V×VR is the weight function where w ( v i , v j ) w(v_i, v_j) w(vi,vj) is the weight of the arc ⟨ v i , v j ⟩ \langle v_i, v_j \rangle vi,vj, and w ( v i , v j ) = w ( v j , v i ) w(v_i, v_j)=w(v_j, v_i) w(vi,vj)=w(vj,vi).


老师原文链接:
12. 树

12.4 作业
1、自己画一棵树, 将其元组各部分写出来 (特别是函数 p p p ).
2、针对该树,将代码中的变量值写出来(特别是parent数组).

在这里插入图片描述
首先是树的定义:
Let ϕ \phi ϕ be the empty node, a tree is a triple T = ( V , r , p ) T=(\mathbf{V}, r, p) T=(V,r,p) where

  • V ≠ ∅ \mathbf{V} \neq \empty V= is the set of nodes;
  • r ∈ V r \in \mathbf{V} rV is the root node;
  • p : V → V ∪ { ϕ } p : \mathbf{V} \to \mathbf{V} \cup \{\phi\} p:VV{ϕ} is the parent mapping satisfying
    • p ( r ) = ϕ p(r) = \phi p(r)=ϕ;
    • ∀ v ∈ V , ∃ 1 n ≥ 0 , \forall v \in \mathbf{V}, \exist1n \ge 0, vV,1n0, st. p ( n ) ( v ) = r p^{(n)}(v)=r p(n)(v)=r.

对于上图的树,定义中的元组各部分具体为:
V = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 , v 6 , v 7 , v 8 , v 9 } \mathbf{V}=\{v_0, v_1, v_2, v_3, v_4, v_5, v_6, v_7, v_8, v_9\} V={v0,v1,v2,v3,v4,v5,v6,v7,v8,v9}.
r = v 0 r=v_0 r=v0.
p ( 0 ) ( v 0 ) = v 0 , p ( 1 ) ( v 1 ) = v 0 , p ( 1 ) ( v 2 ) = v 0 , p ( 1 ) ( v 6 ) = v 0 , p ( 2 ) ( v 3 ) = v 0 , p ( 2 ) ( v 7 ) = v 0 , p ( 2 ) ( v 8 ) = v 0 , p ( 2 ) ( v 9 ) = v 0 , p ( 3 ) ( v 4 ) = v 0 , p ( 3 ) ( v 5 ) = v 0 . p^{(0)}(v_0)=v_0, \\p^{(1)}(v_1)=v_0, p^{(1)}(v_2)=v_0, p^{(1)}(v_6)=v_0, \\p^{(2)}(v_3)=v_0, p^{(2)}(v_7)=v_0, p^{(2)}(v_8)=v_0, p^{(2)}(v_9)=v_0, \\ p^{(3)}(v_4)=v_0, p^{(3)}(v_5)=v_0. p(0)(v0)=v0,p(1)(v1)=v0,p(1)(v2)=v0,p(1)(v6)=v0,p(2)(v3)=v0,p(2)(v7)=v0,p(2)(v8)=v0,p(2)(v9)=v0,p(3)(v4)=v0,p(3)(v5)=v0.

针对该树,代码中各变量的值为:
n = 10,
root = 0,
parent[0]=-1, parent[1]=0, parent[2]=0, parent[3]=2, parent[4]=3, parent[5]=3, parent[6]=0, parent[7]=6, parent[8]=6, parent[9]=6,


老师原文链接:
13. m叉树

13.4 作业

  • 画一棵三叉树, 并写出它的 child 数组.
  • 按照本贴风格, 重新定义树. 提示: 还是应该定义 parent 函数, 字母表里面只有一个元素.
  • 根据图、树、 m m m-叉树的学习, 谈谈你对元组的理解.

首先是 m m m-叉树的定义:
Let ϕ \phi ϕ be the empty node, an m m m-tree is a quadruple M T = ( V , r , Σ , c ) MT = (\mathbf{V}, r, \Sigma, c) MT=(V,r,Σ,c) where

  • V \mathbf{V} V is the set of nodes;
  • r ∈ V r \in \mathbf{V} rV is the root node;
  • c : ( V ∪ { ϕ } ) × Σ ∗ → V ∪ { ϕ } c : (\mathbf{V} \cup \{\phi\}) \times \Sigma^* \to \mathbf{V} \cup \{\phi\} c:(V{ϕ})×ΣV{ϕ} satisfying
    • ∀ v ∈ V , ∃ 1 s ∈ Σ ∗ \forall v \in \mathbf{V}, \exist1 s \in \Sigma^* vV,1sΣ st. c ( r , s ) = v c(r, s)=v c(r,s)=v.

1) 一个三叉树如下:
在这里插入图片描述

因此,定义 Σ = { 1 , 2 , 3 } \Sigma =\{1,2,3\} Σ={1,2,3} 分别表示孩子结点的三个方向.
所以 child 数组为:
{{1, 2, 3}, {4, 5, -1}, {-1, 6, -1}, {-1, -1, -1}, {-1, -1, -1}, {-1, -1, -1}, {-1, -1, -1}}.
child 矩阵为:
[ 1 2 3 4 5 − 1 − 1 6 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 − 1 ] \left[\begin{matrix}1 & 2 & 3 \\ 4 & 5 & -1 \\ -1& 6 & -1 \\ -1& -1 & -1 \\ -1 &-1 &-1 \\ -1 & -1& -1\end{matrix}\right] 141111256111311111

  1. let ϕ \phi ϕ be the empty node, a tree is quadruple T = ( V , r , Σ , c ) T = (\mathbf{V}, r, \Sigma, c) T=(V,r,Σ,c) where
  • V ≠ ∅ \mathbf{V} \neq \empty V= is the set of nodes;
  • r ∈ V r \in \mathbf{V} rV is the root node;
  • Σ \Sigma Σ is the alphabet, and Σ = { 1 } \Sigma =\{1\} Σ={1};
  • p : ( V ∪ { ϕ } ) × Σ ∗ → V ∪ { ϕ } p : (\mathbf{V} \cup \{\phi\}) \times \Sigma^* \to \mathbf{V} \cup \{\phi\} p:(V{ϕ})×ΣV{ϕ} satisfying
    • ∀ v ∈ V , ∃ 1 s ∈ Σ ∗ , \forall v \in \mathbf{V}, \exist1s \in \Sigma^*, vV,1sΣ,st. p ( v , s ) = r p(v, s)=r p(v,s)=r.
  1. 元组是可以把看似没有关系或者关系跟弱的对象联系在一起,并且存到一个容器中.
【源码免费下载链接】:https://renmaiwang.cn/s/os2te 大整数乘法是计算机科学中的一个重要领域,特别是在算法设计和数学计算中有着广泛应用。它涉及到处理超过标准整型变量范围的数值运算。在C++编程语言中,处理大整数通常需要自定义数据结构和算法,因为内置的`int`、`long long`等类型无法满足大整数的存储和计算需求。以下是对这个主题的详细阐述:1. **大整数数据结构**: 在C++中,实现大整数通常采用数组或链表来存储每一位数字。例如,可以使用一个动态分配的数组,每个元素表示一个位上的数字,从低位到高位排列。这种数据结构允许我们方便地进行加减乘除等操作。2. **乘法算法**: - **暴力乘法**:最直观的方法是类似于小学的竖式乘法,但效率较低,时间复杂度为O(n^2)。 - **Karatsuba算法**:由Alexander Karatsuba提出,将两个n位数的乘法转化为三个较小的乘法,时间复杂度为O(n^1.585)。 - **Toom-Cook算法**:比Karatsuba更通用,通过多项式插值和分解进行计算,有不同的变体,如Toom-3、Toom-4等。 - **快速傅里叶变换(FFT)**:当处理的大整数可以看作是多项式系数时,可以利用FFT进行高效的乘法,时间复杂度为O(n log n)。FFT在数论和密码学中尤其重要。3. **算法实现**: 实现这些算法时,需要考虑如何处理进位、溢出等问题,以及如何优化代码以提高效率。例如,使用位操作可以加速某些步骤,同时要确保代码的正确性和可读性。4. **源代码分析**: "大整数乘法全解"的源代码应包含了上述算法的实现,可能还包括了测试用例和性能比较。通过阅读源码,我们可以学习如何将理论算法转化为实际的程序,并理解各种优化技巧。5. **加说明**: 通常,源代码附带的说明会解释
内容概要:本文详细介绍了一个基于Java与Vue技术栈的向量数据库语义检索与相似文档查重系统的设计与实现。系统通过集成BERT等深度学习模型将文本转化为高维语义向量,利用Milvus等向量数据库实现高效存储与近似最近邻检索,结合前后端分离架构完成从文档上传、向量化处理、查重分析到结果可视化的完整流程。项目涵盖需求分析、系统架构设计、数据库建模、API接口规范、前后端代码实现及部署运维等多个方面,并提供了完整的代码示例和模块说明,支持多格式文档解析、智能分段、自适应查重阈值、高亮比对报告生成等功能,具备高扩展性、安全性和多场景适用能力。; 适合人群:具备一定Java和Vue开发基础的软件工程师、系统架构师以及从事自然语言处理、知识管理、内容安全等相关领域的技术人员,尤其适合高校、科研机构、企业IT部门中参与智能文档管理系统开发的专业人员。; 使用场景及目标:①应用于学术论文查重、企业知识产权保护、网络内容监控、政务档案管理等需要高精度语义比对的场景;②实现深层语义理解下的文档查重,解决传统关键词匹配无法识别语义改写的问题;③构建可扩展、高可用的智能语义检索平台,服务于多行业数字化转型需求。; 阅读建议:建议读者结合提供的完整代码结构与数据库设计进行实践操作,重点关注文本向量化、向量数据库集成、前后端协同逻辑及安全权限控制等核心模块。在学习过程中应逐步部署运行系统,调试关键接口,深入理解语义检索与查重机制的工作原理,并可根据实际业务需求进行功能扩展与模型优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asita_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值