sangge ef4f0021cf feat: implement parallel bitonic sort with proper power-of-2 padding (v0.2.0)
- Add rayon dependency for parallel processing
- Implement rayon::broadcast for proper TFHE server key distribution across threads
- Fix bitonic sort to handle non-power-of-2 input sizes by padding to nearest 2^k
- Add parallel execution for recursive calls and comparison operations
- Update API to accept encrypted max values for safe padding
- Add Send/Sync traits for EncryptedNeighbor to enable thread safety
- Modify perform_knn_selection to support bitonic sort requirements
- Bump version to 0.2.0

This resolves the bitonic sort correctness issue where non-power-of-2 array sizes
caused incorrect results. The algorithm now properly pads from 100 to 128 elements
and should produce deterministic, correct results.
2025-07-27 20:02:13 +08:00
2025-07-24 18:43:50 +08:00
2025-07-18 22:16:07 +08:00

hfe_knn

全同态加密下的KNN算法实现

knn算法关键是使用一个距离函数来计算样本之间的距离常用的距离函数有欧氏距离、曼哈顿距离等。 计算距离可以在全密文下实现。 主要是寻找一个全同态加密的比较大小方案

全同态加密计划使用TFHE-rs, 简化后流程无须交互,仅在单个程序内模拟即可。 评分详情见参赛手册

评分机制

正确率计算

  • 算法需要返回10个最近邻向量的索引
  • 正确率 = 正确的索引数量 / 10
  • 例如10个结果中有9个正确正确率 = 90%

评分规则

  • 门槛要求正确率必须≥90%即10个结果中至少9个正确
  • 排名依据:达到门槛后,按总耗时排名(越快越好)
  • 淘汰机制:正确率<90%直接得0分

"正确"的定义

  • 比赛方有标准答案真实的10个最近邻
  • 算法结果与标准答案比较
  • 顺序不重要,只要索引正确即可

数据格式

  • 训练数据JSONL格式每行包含一个query向量和data数组
  • 输出格式:{"answer": [索引1, 索引2, ..., 索引10]}
  • 索引从1开始编号
Description
No description provided
Readme MIT 248 KiB
Languages
Rust 75.2%
Python 18.2%
Shell 4.6%
Dockerfile 2%