45、数据结构与稀疏矩阵基础:二叉搜索树、堆与矩阵运算

数据结构与稀疏矩阵基础:二叉搜索树、堆与矩阵运算

1. 二叉搜索树(Binary Search Trees)

二叉搜索树(BST)是一种重要的数据结构,对于同一组元素,可以构建出不同形态的 BST。不同的 BST 在搜索元素所需的时间上存在差异,这种差异可以通过树的高度来量化。

树中节点的高度定义为该节点到根节点的唯一路径长度。例如,在某 BST 中,标签为 27 的节点高度可能为 1,而在另一个 BST 中,该节点高度可能为 4。BST 的高度则定义为其所有节点高度的最大值。

搜索操作 bfs_search() 的时间复杂度为 $O(h)$,其中 $h$ 是 BST 的高度。如果 BST 的高度为 $O(log N)$($N$ 为 BST 中的元素数量),则称该 BST 是平衡的。在平衡 BST 中,访问、插入、删除和搜索操作的平均时间复杂度为 $O(log N)$。平衡 BST 非常适合存储需要频繁访问和更新的数据,并且在许多图算法中都有应用。

2. 二叉堆(Binary Heaps)

在许多应用中,需要快速找出一组元素中的最大值或最小值。例如,在 Dijkstra 算法中,每次都需要从未访问节点中选择距离源节点最近的节点。如果将未访问节点存储在数组中,每次搜索最小距离元素需要扫描整个数组,时间复杂度为 $O(N)$;若将数组按距离升序排序,每次更新距离后都需要重新排序,时间复杂度为 $O(N log N)$,这比在未排序数组上的线性搜索更糟糕。

二叉堆是解决此类问题的有效数据结构,它可以保证以 $O(1)$ 的时间复杂度访问和提取集合中的最小(或最大)元素,并以 $O(log N)$ 的操作来更新数据结构。如果一个二叉堆能在常数时间内访问集合中的最大(最小)元素,则称其为最大堆(Max-Heap)或最小堆(Min-Heap)。

2.1 最大堆(Binary Max-Heap)的性质
  • 每个节点都关联一个数值键,键不一定唯一。
  • 树有且仅有一个根节点。
  • 除根节点外,每个节点都有一个父节点,即离根节点更近的邻居。
  • 每个节点最多有两个子节点,分别称为左子节点和右子节点。
  • 树是完全的,即除最后一层外,所有层都被完全填充,最后一层从左到右填充。
  • 最大堆性质:任何节点的键都大于或等于其所有子节点的键。

最小堆的定义与最大堆类似,只是最大堆性质变为任何节点的键小于或等于其所有子节点的键。

例如,给定三个具有相同元素集合的树,只有满足上述所有性质的树才是最大堆。

2.2 堆的操作

二叉堆通常支持以下两种基本操作:
- heap_extract() :移除堆的根节点,并重新排列元素以确保剩余结构仍然是堆。
- heap_insert() :向堆中插入一个新元素。

可以使用数组来实现堆,具体规则如下:
- 数组中位置 $i$ 的节点的左子节点位于位置 $2 × i + 1$。
- 数组中位置 $i$ 的节点的右子节点位于位置 $2 × i + 2$。
- 数组中位置 $i$ 的节点的父节点位于位置 $\lfloor(i - 1)/2\rfloor$。

以下是 heap_extract() 和 sift_down() 的伪代码:

Algorithm 5 heap_extract()
Input: H, N
Output: H, N, max_H
1: max_H ← H[0]
2: H[0] ← H[N - 1]
3: N ← N - 1
4: sift_down(H, N, 0)
5: return max_H

Algorithm 6 sift_down()
Input: H, N, current
Output: H (with max-heap property respected)
1: largest ← current
2: left ← 2 × current + 1
3: right ← 2 × current + 2
4: if left < N and H[left] > H[largest] then
5:     largest ← left
6: end if
7: if right < N and H[right] > H[largest] then
8:     largest ← right
9: end if
10: if largest ≠ current then
11:     swap (H[current], H[largest])
12:     sift_down(H, N, largest)
13:     return
14: end if

以下是 heap_insert() 和 sift_up() 的伪代码:

Algorithm 7 heap_insert()
Input: H, N, new_key
Output: N, H (with new_key added and max-heap property respected)
1: N ← N + 1
2: H[N - 1] ← new_key
3: sift_up(H, N, N)
4: return H

Algorithm 8 sift_up()
Input: H, N, current
Output: H (with max-heap property respected)
1: parent ← ⌊(current - 1)/2⌋
2: while H[parent] < H[current] do
3:     swap(H[parent], H[current])
4:     current ← parent
5:     parent ← ⌊(current - 1)/2⌋
6: end while
7: return H

heap_extract() 操作的流程如下:
1. 读取堆的最大值(存储在数组的第一个位置)并将其放入返回变量 max_H 。
2. 将数组的最后一个元素移到第一个位置。
3. 调用 sift_down() 函数来恢复最大堆性质。

heap_insert() 操作的流程如下:
1. 增加堆的元素数量。
2. 将新元素插入到堆的最后一个位置。
3. 调用 sift_up() 函数来确保新元素找到合适的位置,以满足最大堆性质。

heap_extract() 和 heap_insert() 的时间复杂度均为 $O(log N)$。

3. 稀疏矩阵(Sparse Matrices)

矩阵是一种常见的数学结构,一个 $m×n$ 的矩阵 $A$ 是由 $m$ 行 $n$ 列的实数组成的表格,矩阵元素用 $a_{ij}$ 表示。矩阵的加法、数乘和乘法运算有特定的定义。矩阵的转置是通过交换行和列得到的,如果一个矩阵等于其转置,则称该矩阵为对称矩阵。

在处理与图相关的矩阵(如邻接矩阵和拉普拉斯矩阵)时,由于现实世界网络中的矩阵通常是稀疏的,即矩阵的非零元素数量 $M$ 远小于 $N^2$($N$ 为矩阵的阶数),因此需要使用特殊的表示方法来提高存储和运算效率。

3.1 ij - 形式(ij - Form)

$N × N$ 矩阵 $A$ 的 ij - 形式使用三个长度为 $M$(矩阵非零元素数量)的向量 $i$、$j$ 和 $s$。向量 $i$ 和 $j$ 分别存储矩阵非零元素的行和列索引,向量 $s$ 存储这些非零元素的值。如果 $A$ 是加权图的邻接矩阵,向量 $s$ 存储边的权重。

通过这些基础的数据结构和矩阵运算知识,我们可以更高效地处理各种算法问题,尤其是在图论和网络分析领域。二叉搜索树和二叉堆为我们提供了高效的数据存储和检索方法,而稀疏矩阵的表示则有助于优化矩阵运算的性能。在实际应用中,我们可以根据具体需求选择合适的数据结构和算法,以提高程序的效率和性能。

下面是一个简单的 mermaid 流程图,展示 heap_extract() 的操作流程:

graph TD;
    A[开始] --> B[读取最大值];
    B --> C[将最后元素移到首位];
    C --> D[调用 sift_down()];
    D --> E[结束];

同时,我们可以用表格总结二叉堆的操作复杂度:
| 操作 | 时间复杂度 |
| ---- | ---- |
| heap_extract() | $O(log N)$ |
| heap_insert() | $O(log N)$ |
| 查找最大值(最大堆) | $O(1)$ |
| 查找最小值(最小堆) | $O(1)$ |

数据结构与稀疏矩阵基础:二叉搜索树、堆与矩阵运算

4. 压缩行存储格式(Compressed Row Storage Format)

除了 ij - 形式,压缩行存储(CRS)格式也是一种常用的稀疏矩阵表示方法。在 CRS 格式中,需要三个数组: row_ptr 、 col_idx 和 values 。

  • row_ptr :长度为 $m + 1$,其中 $m$ 是矩阵的行数。 row_ptr[i] 表示第 $i$ 行的非零元素在 col_idx 和 values 数组中的起始位置。
  • col_idx :存储所有非零元素的列索引。
  • values :存储所有非零元素的值。

例如,对于一个 $3\times3$ 的稀疏矩阵:
[
A =
\begin{bmatrix}
1 & 0 & 2 \
0 & 3 & 0 \
4 & 0 & 5
\end{bmatrix}
]
其 CRS 格式表示如下:
- row_ptr = [0, 2, 3, 5]
- col_idx = [0, 2, 1, 0, 2]
- values = [1, 2, 3, 4, 5]

通过 row_ptr 数组,我们可以方便地定位每一行的非零元素。例如,第 1 行的非零元素从 col_idx[row_ptr[0]] 到 col_idx[row_ptr[1] - 1] ,即 col_idx[0] 和 col_idx[1] ,对应列索引为 0 和 2,值分别为 values[0] 和 values[1] ,即 1 和 2。

4.1 从 ij - 形式转换到 CRS 格式

将矩阵从 ij - 形式转换到 CRS 格式的步骤如下:
1. 初始化 row_ptr 数组, row_ptr[0] = 0 。
2. 遍历 i 向量(ij - 形式中的行索引向量),统计每一行的非零元素数量。
3. 根据每一行的非零元素数量,计算 row_ptr 数组的后续元素。
4. 初始化 col_idx 和 values 数组。
5. 再次遍历 i 、 j 和 s 向量,将列索引和元素值分别存储到 col_idx 和 values 数组中。

以下是一个简单的 Python 代码示例,展示如何进行转换:

def ij_to_crs(i, j, s, m):
    row_ptr = [0] * (m + 1)
    for idx in i:
        row_ptr[idx + 1] += 1
    for k in range(1, m + 1):
        row_ptr[k] += row_ptr[k - 1]
    col_idx = [0] * len(i)
    values = [0] * len(i)
    for idx in range(len(i)):
        row = i[idx]
        pos = row_ptr[row]
        col_idx[pos] = j[idx]
        values[pos] = s[idx]
        row_ptr[row] += 1
    # 恢复 row_ptr 的原始值
    for k in range(m, 0, -1):
        row_ptr[k] = row_ptr[k - 1]
    row_ptr[0] = 0
    return row_ptr, col_idx, values
4.2 从 CRS 格式转换到 ij - 形式

将矩阵从 CRS 格式转换到 ij - 形式的步骤如下:
1. 初始化 i 、 j 和 s 向量。
2. 遍历 row_ptr 数组,对于每一行,根据 row_ptr 数组确定该行非零元素的范围。
3. 在该范围内,将行索引、列索引和元素值分别添加到 i 、 j 和 s 向量中。

以下是一个简单的 Python 代码示例,展示如何进行转换:

def crs_to_ij(row_ptr, col_idx, values, m):
    i = []
    j = []
    s = []
    for row in range(m):
        start = row_ptr[row]
        end = row_ptr[row + 1]
        for pos in range(start, end):
            i.append(row)
            j.append(col_idx[pos])
            s.append(values[pos])
    return i, j, s
5. 稀疏矩阵的矩阵 - 向量乘法

稀疏矩阵的一个重要应用是矩阵 - 向量乘法。对于一个 $m\times n$ 的矩阵 $A$ 和一个 $n$ 维向量 $x$,矩阵 - 向量乘法 $y = Ax$ 的结果是一个 $m$ 维向量 $y$。

在稀疏矩阵的情况下,使用 ij - 形式或 CRS 格式可以更高效地执行矩阵 - 向量乘法。

5.1 使用 ij - 形式进行矩阵 - 向量乘法

使用 ij - 形式进行矩阵 - 向量乘法的步骤如下:
1. 初始化结果向量 $y$ 为零向量。
2. 遍历 i 、 j 和 s 向量。
3. 对于每一个非零元素 $a_{ij}$(存储在 s 向量中,行索引为 i ,列索引为 j ),将 $a_{ij}x_j$ 累加到 $y_i$ 中。

以下是一个简单的 Python 代码示例:

def sparse_matrix_vector_multiply_ij(i, j, s, x, m):
    y = [0] * m
    for idx in range(len(i)):
        row = i[idx]
        col = j[idx]
        value = s[idx]
        y[row] += value * x[col]
    return y
5.2 使用 CRS 格式进行矩阵 - 向量乘法

使用 CRS 格式进行矩阵 - 向量乘法的步骤如下:
1. 初始化结果向量 $y$ 为零向量。
2. 遍历每一行。
3. 对于每一行,根据 row_ptr 数组确定该行非零元素的范围。
4. 在该范围内,将非零元素与向量 $x$ 对应元素的乘积累加到 $y$ 的相应行中。

以下是一个简单的 Python 代码示例:

def sparse_matrix_vector_multiply_crs(row_ptr, col_idx, values, x, m):
    y = [0] * m
    for row in range(m):
        start = row_ptr[row]
        end = row_ptr[row + 1]
        for pos in range(start, end):
            col = col_idx[pos]
            value = values[pos]
            y[row] += value * x[col]
    return y
6. 总结与应用场景

通过上述内容,我们了解了二叉搜索树、二叉堆和稀疏矩阵的相关知识。这些数据结构和算法在不同的场景中有着重要的应用。

  • 二叉搜索树 :适用于需要频繁进行插入、删除和搜索操作的场景,尤其是当数据需要有序存储时。平衡二叉搜索树在处理大规模数据时能保证较好的时间复杂度。
  • 二叉堆 :在需要快速找到最大值或最小值的场景中表现出色,如 Dijkstra 算法、优先队列等。堆操作的时间复杂度较低,能有效提高算法效率。
  • 稀疏矩阵 :在处理大规模稀疏矩阵时,ij - 形式和 CRS 格式能显著减少存储空间,并提高矩阵运算的效率。在图论、机器学习等领域,稀疏矩阵的应用非常广泛。

下面是一个 mermaid 流程图,展示稀疏矩阵从 ij - 形式到 CRS 格式的转换流程:

graph TD;
    A[开始] --> B[初始化 row_ptr];
    B --> C[统计每行非零元素数量];
    C --> D[计算 row_ptr 后续元素];
    D --> E[初始化 col_idx 和 values];
    E --> F[遍历 i, j, s 向量];
    F --> G[填充 col_idx 和 values];
    G --> H[恢复 row_ptr 原始值];
    H --> I[结束];

同时,我们可以用表格总结稀疏矩阵不同表示方法的特点:
| 表示方法 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| ij - 形式 | 简单直观,易于实现 | 存储效率相对较低 | 小规模稀疏矩阵或需要快速构建矩阵的场景 |
| 压缩行存储格式 | 存储效率高,适合矩阵 - 向量乘法 | 构建过程相对复杂 | 大规模稀疏矩阵和需要频繁进行矩阵 - 向量乘法的场景 |

综上所述,掌握这些数据结构和算法对于解决实际问题,特别是在图论、网络分析和机器学习等领域,具有重要的意义。我们可以根据具体的应用场景选择合适的数据结构和算法,以达到最佳的性能和效率。

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01 算法设计 阅读详情

相关推荐

华为OD机试 新系统 双机位C卷 真题题库目录|机考题库 + 算法考点详解

本文整理华为OD机试(机考) 新系统真题题库,提供高频考点精析与详细题目内容,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 和 在线OJ做题练习。华为OD机试新系统真题题库。

qq_45776114的博客 10万+

【管理科学】第三十五篇 企业经营中的管理科学01 权力、风险、运营、物流、人力资源、库存、合同、品牌、业绩、项目

编号类型领域子领域/内容问题问题的数学分析(电磁/信息论/数学物理/数学化学/界面科学/表面科学 + 几何/拓扑/代数/集合论/图论/数论/函数评估/数值估计/概率/统计/向量/张量/矩阵/矢量 + 其他)算法逐步推理思考的数学表达式及实现步骤及时序流程 参数列表及参数的数值范围及数值分析及常量/常数1管理科学问题运营管理生产计划如何分配有限资源生产多种产品以最大化利润?线性代数、凸优化、单纯形法;向量与矩阵目标函数 max c^T x,约束 Ax ≤ b, x ≥ 0。步骤:①标准化引入松弛变量;②构建初

weixin_49199313的博客 246

轻美图纯PHP图库网站源码(内含1000+美图).zip

纯PHP的移动端图库站:把图片按「img/日期目录/」存放,自动按上传批次归组,前台封面卡瀑布流展示,手机电脑都能看。 不依赖数据库服务、不依赖框架,PHP自带SQLite即可。内含1000+美图,虚拟主机上传即用。

chrome-win32-158.0.8127.18(Beta).zip

chrome-win32-158.0.8127.18(Beta).zip

YOLO26算法布料疵点检测+训练好的模型+1558张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 77 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.2733** mAP50-95 | 0.1152 Precision | 0.5202 Recall | 0.3310 train/box_loss | 1.7189 train/cls_loss | 1.6681 val/box_loss | 1.9965 val/cls_loss | 2.3766 【训练过程分析】 这轮训练从一开始就显得有些波澜不惊,前期的 mAP50 只有 0.2733,训练曲线看起来平滑而稳定,但到了第 77 轮时,曲线仿佛失去了动力,mAP50 基本停滞不前。起初,我还在期待能有明显的上升趋势,但现实似乎有些不如人意。从 1 到 77 轮,loss 也仅仅从 1.7189 逐步增长到了 1.9965,虽然整体上有所提升,但似乎未能突破瓶颈。更令人头疼的是,val/box_loss 和 val/cls_loss 在训练过程中也逐步攀升,这说明模型在验证集上的表现并不比训练集更好。这个阶段,我多次试图寻找问题所在,但曲线的平缓走势让人有些泄气,感觉就像在爬一个没有顶峰的山。 回顾整个训练过程,我尝试过手动调整了几次学习率,希望能加速收敛,但结果并不理想。从 0.01 的初始值到调整为 0.005,甚至 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

YOLO26算法太阳能电池片识别+训练好的模型+748张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 50 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6599** mAP50-95 | 0.4503 Precision | 0.7850 Recall | 0.6017 train/box_loss | 1.0098 train/cls_loss | 0.8936 val/box_loss | 1.2667 val/cls_loss | 1.4251 【训练过程分析】 这轮 YOLO26n 训练的 50 个 epoch 过程让我有点揪心。一开始,mAP50 的表现还算不错,但到后期,提升就明显放慢了。我记着曲线在第 30 个 epoch 时出现了一个小高峰,mAP50 稳稳地停在了 0.6599。这让我觉得可能模型已经在较早的阶段就过早收敛了,因为即便后期数据集里的新样本不断涌入,也没能推高 mAP50。从 30 到 50 个 epoch,损失值 train/box_loss 从 1.0098 下降到 1.0048,val/box_loss 也稳定在 1.2667,这表明模型在训练集上收敛良好,但验证集的表现并没有提升多少。这让我怀疑模型可能遇到了平台期。更让人头疼的是,class loss 虽然在训练过程中不断下降,但验证集上的 cls_loss 却始终高居不下,保持在 1.4... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

产业园区运营负责人如何利用平台挖掘企业技术需求并精准对接?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Challenges in Functional Verification of PCIe 3.0 Devices.pdf

Challenges in Functional Verification of PCIe 3.0 Devices.pdf

科技中介服务机构在为企业提供创新咨询服务时,如何提升服务响应速度与专业性?.docx

科技中介服务机构在为企业提供创新咨询服务时,如何提升服务响应速度与专业性?

政府科技管理者在推动科技成果转化过程中,如何高效识别和筛选高质量科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

PythonNotesForProfessionals.pdf

PythonNotesForProfessionals.pdf

无刷直流电机BLDC转速电流双闭环+无位置传感器控制仿真【仿真+详解说明报告+参考文献】

内容概要:本文提供了一套关于无刷直流电机(BLDC)转速电流双闭环控制与无位置传感器控制的Simulink仿真资源,包含完整的仿真模型、详尽的说明报告及参考文献。资源核心聚焦于BLDC的高性能控制策略,重点实现了基于滑模观测器(SMO)的无位置传感器控制技术,并系统对比了模糊PID与传统PID控制在BLDC调速系统中的性能差异。内容涵盖了转速环与电流环的双闭环PI控制器设计、反电动势过零检测、换相逻辑、PWM调制等关键技术环节,同时提供了模糊神经网络PID等先进智能控制算法的扩展仿真模型,旨在帮助用户深入理解BLDC的控制原理、无感控制实现方法及多种智能控制策略的仿真建模技术。; 适合人群:具备一定电力电子技术、自动控制理论和电机学基础,从事电机驱动控制、电力传动系统研究或相关产品开发的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握无刷直流电机双闭环控制系统的设计流程与Simulink仿真建模方法;② 深入研究并实践基于滑模观测器的无位置传感器控制技术的实现原理与参数整定;③ 对比分析模糊PID、传统PID及模糊神经网络PID等多种智能控制算法在BLDC调速系统中的动态响应、抗干扰能力和稳态精度等性能差异;④ 为电机控制相关的课程设计、毕业设计、科研项目或工程开发提供可复现的仿真模型和理论依据。; 阅读建议:建议读者结合所提供的详解说明报告与参考文献,严格按照步骤在Simulink环境中搭建、调试和运行仿真模型。学习过程中应重点关注控制器参数(如PI参数)的整定过程、滑模观测器的设计与抖振抑制、以及不同控制策略下系统的启动、调速和抗负载扰动等动态响应特性,通过大量的对比仿真实验,深化对BLDC控制理论与工程实践的理解。

模糊PID控制的BLDC无刷直流电动机调速仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了一种基于模糊PID控制的BLDC无刷直流电动机调速仿真模型,利用MATLAB/Simulink平台实现了对无刷直流电机的精确调速控制,并与传统PID控制策略进行了系统性对比分析。文中深入阐述了模糊PID控制器的设计原理与实现方法,包括模糊规则库构建、隶属度函数设计及解模糊化过程,充分展现了其在动态响应速度、抗干扰能力、稳态精度和系统鲁棒性方面的显著优势。同时,提供了完整的仿真模型架构、参数设置及实验数据结果,帮助读者直观理解不同控制策略在电机调速应用中的性能差异,特别突出了模糊PID在应对非线性、时变负载工况下的优越表现。; 适合人群:具备自动控制理论基础、电机拖动知识以及Simulink仿真经验的高等院校研究生、科研人员,以及从事电机驱动系统、工业自动化、电力电子与运动控制等相关领域的工程技术人员。; 使用场景及目标:①用于高校课程教学与实验教学,演示模糊PID与传统PID在电机控制系统中的性能对比;②为科研项目提供高可信度的仿真验证平台,支持新型智能控制算法(如自适应模糊、神经网络PID等)的研究与优化;③指导工程实践中电机调速系统的控制策略选型、参数整定与性能评估,提升实际控制系统的动态品质与可靠性。; 阅读建议:建议读者结合所提供的完整仿真模型文件,动手复现并调试不同工况下的控制效果,深入探究模糊规则设计、量化因子与比例因子调整对系统性能的影响机制,进而拓展学习模糊神经网络PID、自适应模糊控制等先进控制策略,以进一步提升复杂环境下电机控制的精度与智能化水平。

产业园区运营负责人如何快速识别并推荐高价值科技成果给入园企业?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ALPHAB 点集轮廓 + ABLINK 选点连线(CAD测绘算量工具)

用于测绘内业和工程算量中“由离散点生成边界”的场景。适用于:林地、地块边界的自动勾绘(如施工平台、道路、原地貌采集点范围线),在大量坐标点/高程点中一次性圈出最外侧范围,替代手工逐点描边;生成的闭合多段线可直接用于 CAD 面积查询(AA/AREA)、填充和工程量统计表。 典型用途: 面积统计:框选一片测量点,自动输出干净的边界闭合线,量面积、算砍伐/占地工程量 带状地物描线:道路、沟渠、林带等条带状点群,框选后按最近邻自动排序连线 规则布点连线:矩阵网格桩点按主方向投影排序,蛇形连线不交叉 按桩号连线:中桩/边桩按 K0+120 桩号顺序自动连线,画纵断面走向线 操作只需两步:框选点 → 回车自动搜索半径(也可手动指定),边界线一次成型,无需调参数。 两个功能: ① ALPHAB —— 点集自动圈边界(求面积用)​ 框选一片离散测量点(点/块/圆),回车自动搜索最优半径,一次性生成最外侧边界闭合多段线,直接用 CAD 面积命令量面积、算砍伐/占地工程量。边界不穿点带内部空地、无自交无交叉,替代手工逐点描边。 ② ABLINK —— 选点连折线(连线/描走向用)​ 两种用法: 逐个点击,按点击顺序连成线 框选一批点自动排序连线,三种排序可选:最近邻(带状点群,如道路、林带)、主方向(规则网格桩点,蛇形连线不交叉)、桩号(按 K0+120 等块属性/文字桩号值升序连,画中桩走向线)

基于three.js的室内全景3D展馆案例分享

3D场景展厅

acheng 3556

“三进制”bonsai27b+NInfer=6g显存闪电侠(token真的自由了!)

本文将1.58-bit三元大模型Bonsai27B成功移植至NInfer推理引擎,并在RTX 4080 SUPER上实现100+ token/s的极速推理。通过自研补丁扩展NInfer支持Ada架构与三元量化格式,解决激活布局、行置换等关键bug,实测PPL 6.445,单流吞吐达96.7–130.8 t/s,20题基准得分16/20。附完整复现包(含文档、工具、源码补丁),零权重分发,助力垃圾显卡跑通27B级模型。

shensanshu的博客 1万+

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3674

图像相似度的评价指标 : FID(Fréchet Inception Distance)

FID(Fréchet Inception Distance) 是用来计算真实图像与生成图像的特征向量间距离的一种度量。如果FID值越小,则相似程度越高。最好情况即是FID=0,两个图像相同。 实际计算: 参考链接:https://machinelearningmastery.com/how-to-implement-the-frechet-inception-distance-fid-from-scratch/ # example of calculating the frechet inceptio

weixin_43723625的博客 1万+

IIR数字滤波器原理,设计方法及嵌入式应用

基于STM32的二阶直接II型巴特沃斯低通滤波器设计方法及应用

weixin_38342580的博客 1万+

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(二)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1645

强化学习:从经典强化学习理解强化学习

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习领域的重要分支,近年来取得了长足的进步。其核心思想是让智能体通过与环境的交互学习最优策略,从而最大化累积奖励。不同于监督学习和非监督学习,强化学习无需预先标注数据,而是通过试错的方式逐步学习,具有更强的适应性和泛化能力。

AI架构师小马 1797

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1380

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 44、基础数据结构:数组、栈与二叉搜索树
下一篇: 46、稀疏矩阵基本操作与特征值特征向量计算
随身带U盘
博客等级 码龄4年 30粉丝 1526原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值