用于解决用 Rust 编写的分配问题的 Kuhn-Munkres(又名匈牙利语)算法。时间复杂度为 O(n^3)
2022-06-11 18:06:14 11KB rust 算法
实现声音变化算法的工具。 这是严格按照 Mark Rosenfelder 的Sound Change Applier建模的,对 Rust 的宏系统进行了必要的调整。 典型用法以及与原始 SCA 规则的比较:
2022-06-11 18:06:14 14KB 算法 rust
Quicksilver 是一个近似算法和草图的库 该库中包含的算法旨在以近似的方式计算常见的指标和统计数据(例如基数、频率等)。为了降低准确性,这些算法通常具有最小的内存开销或非常快。或两者。 公共模块 HLL - HyperLogLog 以最小的内存开销近似基数估计 这实现了 HyperLogLog,一种提供合理准确的基数估计的算法。它非常快(我的 Macbook Air 上 200m op/s)并且需要最少的内存。它可以估计包含数十亿条目的集合的基数。
2022-06-11 18:06:13 51KB 算法 rust
问题的简要描述 当使用 Marching Cubes 为不同细节级别的相邻块独立提取网格时,网格通常在块的连接处不匹配,从而导致可见的孔洞: Transvoxel 算法允许为大部分具有行进立方体 的块生成网格,但增加了块的一个或多个外表面的细节,以便与相邻块的网格匹配: 范围 该库仅提供用于提取块的网格的功能,独立于其他块。要实现完全一致的动态详细级别系统,您可能还需要: 决定需要渲染和生成网格的块,以及分辨率(通常取决于相机位置和/或方向) 跟踪自己的约束: 两个渲染的相邻块只能具有相同的分辨率,或者一个具有另一个分辨率的两倍 在第二种情况下,低分辨率块也必须在高分辨率块的方向上使用过渡面进行渲染 目前,在不重新提取新网格的情况下,不可能“翻转”块上的过渡面状态为块。这意味着更改一个块的分辨率可以通过约束级联到重新生成其他几个块
2022-06-11 18:06:13 206KB rust 算法
str根据显示宽度填充或截断 Unicode 感知算法
2022-06-11 18:06:12 25KB rust 算法
OpenSimplex 噪声是Kurt Spencer的一种随机噪声算法,是 Perlin 和 Simplex 噪声的无专利替代方案。 这个 Rust 端口目前支持 2D、3D 和 4D 噪声。
2022-06-11 18:06:11 33.56MB rust 算法
包含GPRS 加密算法版本 1 和 2的软件实现。 GPRS 加密算法 GEA-1 和 GEA-2研究论文的 密码分析提供了两种算法的完整描述,以及针对 GEA-1 的有效密码分析(允许将密钥强度弱化为 40 位而不是 64 位)。它还为 GEA-2 的密码分析提供了提示。 第二篇论文:o Shift or Not to Shift:了解 GEA-1 扩展了这种密码分析,并提供了对这种密码结构的更广泛的了解。 第三个:GPRS 密码 GEA-1 和 GEA-2的改进 密码分析增强了 GEA1 和 GEA2 的密码分析,例如减少内存需求 历史 GEA-1 和 GEA-2 都是基于 3 个、4 个 LFSR 和一个布尔函数的流密码。它们依赖于 64 位对称密钥,该密钥是在成功验证移动用户身份后建立的。它们可用于保护 GPRS 和 EDGE 连接,具体取决于移动运营商在其SGSN中所做的配置。 它们最初是在 90 年代与 GPRS 系统一起设计的。从密码分析论文来看,GEA-1 似乎被故意削弱了;这看起来与 A5/2 相似,它是一种弱化的 GSM 加密算法。随着 3G 和 UMTS
2022-06-11 18:06:11 45KB 算法 rust
Fletcher 的校验和旨在提供与 CRC 几乎相同的错误校验能力,但软件实现速度更快。这不是加密安全校验和,它仅用于检查数据的完整性而不是真实性。 算法专家 该算法在软件中运行比大多数 CRC 更快。这是因为 CRC 算法最初设计为易于在硬件中实现,但不一定在软件中实现。Fletcher Checksum 专门设计用于在软件中实现。 算法缺点 此校验和算法确实无法0xFF 区分0x00. 这意味着所有位设置为 1 的数据块将具有与所有位设置为 0 的数据块完全相同的校验和。这是因为算法使用补码数学。 Fletcher 的校验和在检测数据中的位错误方面不如具有良好选择多项式的 CRC 好。 如何使用 如果你有一个完整的数据块,你想得到校验和,你可以使用 calc 函数([ calc_fletcher16]、[ calc_fletcher32]、[ calc_fletcher64])在单个函数调用中获取校验和。 如果您以块的形式获取数据,则可以创建一个 [ Fletcher] 对象([ Fletcher16]、[ Fletcher32]、[ Fletcher64])来管理数据
2022-06-11 18:06:10 7KB 算法 rust
受siggraph.org 配方启发的 Huffman 编码算法的 Rust 实现 此概念验证版本支持 4 个字母:具有固定概率的 ABCD:
2022-06-11 18:06:10 4KB rust 算法
置换 Permutate 作为一个库和应用程序存在,用于使用原始的基于 Rust 的算法对通用向量或列表元组以及单个列表进行置换。它的开发主要是为了包含在 GNU Parallel 程序的 Rust 实现中,并在 Redox 的 Ion shell 中进行大括号扩展。 可以在 Docs.rs上找到源代码文档。 特征 bin-utils- 如果设置,则包含二进制实用程序。 默认设置,并且是bin和bench配置文件所必需的。 力学 排列通过递增索引计数器的向量并返回对基础数据的引用向量来工作(除非容器拥有这些值并且它们是副本)。为获得最佳使用效果,最好使用该方法执行一次迭代 next(),然后使用该方法进行后续迭代 next_with_buffer(),这样您就可以重新使用之前的向量分配。也可以通过该方法获取内部索引计数器的get_indexes()状态,并通过该方法设置状态 set_indexes。 例子 这些是有关如何使用该库来处理各种类型数据的示例列表。我们可能需要确保的唯一一件事是我们的字符串列表符合Vec<&[&str]>格式。
2022-06-11 18:06:09 26KB 算法 rust