永田裕一的EAX-GA算法

在一本奇书[1]上看到旅行商问题 (TSP) 的一个纪录居然是由遗传算法 (GA) 得到的:永田裕一(2006) [2]的 EAX-GA 解出了十万个节点的TSP已知最好的路线。这与一般认为 GA 在复杂的大型实际问题中的效果仅仅是“聊胜于无”大相径庭,永田的GA是到底是怎么摘下王者桂冠的呢?

 

 

文章引言部分提到最有效的近似方法都基于Lin-Kernighan的局部搜索(LKLS),包括 Chained LK 算法和Helsgaun 的 LKH 算法。作者认为有效的交叉算子设计是进化算法性能的关键,之前的相关方法往往将LKLS结合到算法之中以提高效率,而作者提出的 edge assembly crossover 算子(EAX)效率并不输给 LKLS 系算法。

 


 

参考文献

[1] 库克. 迷茫的旅行商:一个无处不在的计算机算法问题 (隋春宁 译), 人民邮电出版社, 2013

[2] Yuichi Nagata (2006). New EAX Crossover for Large TSP Instances, Parallel Problem Solving from nature - PPSN IX, pp 372-381

 

转载于:https://www.cnblogs.com/mengchang/p/9177700.html

A5-1算法种保密通信协议,用于无线局域网(WLAN)的安全标准,特别是适用于802.11i标准(现在称为WPA和WPA2)。它主要用于数据加密和完整性检查,在Wi-Fi网络中保护无线传输的数据。 在C语言中实现A5-1算法通常需要对AES(高级加密标准)算法有深入理解,因为A5-1是基于AES的。以下是个简化的步骤概述: 1. 包含必要的头文件:包括AES库(如`openssl/aes.h`或自定义的AES头文件)。 ```c #include "aes.h" ``` 2. 定义变量和函数指针:A5-1涉及密钥分块、循环前缀等操作,这部分需要些预处理宏。 ```c typedef void (*AES_encrypt_t)(uint8_t *dst, const uint8_t *src); ``` 3. 加密和解密函数:利用AES的加密函数`AES_encrypt()`,根据需要进行加密(EAX模式)或解密(CBC模式)。 ```c void a51_encrypt(uint8_t *output, const uint8_t *input, AES_encrypt_t aes_encrypt) { // 使用EAX模式(AES + CMAC) // ... // 调用AES_encrypt()函数 aes_encrypt(output, input); } void a51_decrypt(uint8_t *output, const uint8_t *input, AES_encrypt_t aes_encrypt) { // 解密过程类似,先解密AES,然后解CMAC // ... aes_encrypt(output, input); // 这里是对输入进行AES解密 } ``` 4. 密钥管理和模式选择:A5-1需要正确的密钥和IV设置,这部分依赖于具体的实现细节。 由于A5-1的实现相当复杂,并且不是C语言的标准库功能,完整代码可能会很长并超出此回答范围。如果你打算实际编写这样的代码,建议查阅相关文档和示例,例如遵循Wi-Fi Alliance提供的规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值