置换排列的数学表达与Benes网络

摘要

本文主要讨论如何使用Benes网络完成排列的置换操作,介绍Benes网络的构造,以及具体的路由方式。

置换排列

这里的排列指一个n个不同元素的序列,不同的顺序代表不同的排列。比如 [ 1 , 2 , 3 , 4 ] [1,2,3,4] [1,2,3,4] [ 2 , 1 , 4 , 3 ] [2,1,4,3] [2,1,4,3]是两个不同的排列。

这里我们考虑如何利用Benes网络,从一个排列变为另一个排列。

矩阵乘法的角度看置换排列

从数学的角度来看,这是一个矩阵的乘法问题,也就是将排列当作一个向量,然后乘以一个置换矩阵,就可以得到另外一个排列。

比如,我们需要将 a = [ 1 , 2 , 3 , 4 ] a=[1,2,3,4] a=[1,2,3,4]置换为 b = [ 2 , 1 , 4 , 3 ] b=[2,1,4,3] b=[2,1,4,3]. 这时,我们需要一个置换矩阵 P P P.使得 b = a × P . b=a\times P. b=a×P.

我们观察到 b b b中的第一个元素是 a a a中的第二个元素,而 b b b中的第一个元素是 P P P的第一列和 a a a的内积,因此,置换矩阵 P P P的第一列第二行的元素为1,第一列中的其他元素为0. 如此类推,可以得到置换矩阵
P = [ 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 ] . P=\begin{bmatrix} 0 & 1 & 0& 0\\ 1 & 0 & 0& 0\\ 0 & 0 & 0&1\\ 0& 0 & 1&0 \end{bmatrix}. P= 0100100000010010 .

假设排列的长度为 n n n,那么显然,需要 n × n n\times n n×n的置换矩阵,而乘法的复杂度是 O ( n 2 ) O(n^2) O(n2).

从交换原理的角度看置换排列

从交换原理来看,置换排列其实是一个路由问题。输入为 a a a,经过交换网络后,变为 b b b. 在 a [ i ] = b [ j ] a[i]=b[j] a[i]=b[j]时,就是 a [ i ] a[i] a[i]的目的地址为 b [ j ] b[j] b[j].

由于我们希望可以完全并行的穿过整个交换机,那么交换机的拥塞应该为1.也就是在任意一步,不会存在两个元素跑到同一个节点。我们知道Benes网络具有这个特点。一个层数为 2 log ⁡ n − 1 2 \log n-1 2logn1的Benes可以完成 n n n维向量的重新排列。

Benes网络的构造

Benes网络的构造是通过递归构造的。Benes网络的输入节点和输出节点一样多,一般为2的幂次。我们用 B 2 B_2 B2表示输入节点为2的Benes网络。则 B 2 B_2 B2
网络的结构

然后 B 4 B_4 B4的基本构造是由两个 B 2 B_2 B2,然后再加上 4 4 4个输入节点和 4 4 4个输出节点。然后上面的两个输入节点连接到下面 B 2 B_2 B2的节点。下面的两个输出节点连到上面的一个 B 2 B_2 B2.对称构造输出节点。如图所示:
网络的结构

B 8 B_8 B8是使用两个 B 4 B_4 B4,加上8个输入节点和8个输出节点构造:
网络的结构

Benes路由方法

Benes的路由和构造的过程相反,首先从两边填充路由信息,然后逐步向中间填充。

下面是填充路由信息的具体算法步骤:

0:将输入和输出分别填充到输入节点和输出节点;

1:对于输入节点来说,由于不能存在拥塞,所以,具有相同目的地的节点不能在下一步的同一个子网中出现。而对于输出节点来说,可以由同一个节点到达的输出节点的不能来自于同一个子网络。而我们注意到,去掉输入和输出后的Benes网络是两个完全分开的Benes网络,中间不存在连接。因此,可以将不可以在同一个子网中的节点连接起来,构造一个图;

2:对第1步形成的图2着色,每一个颜色走一个子Benes网络,从而可以填充下一步的输入节点;

3:根据填好的下一步输入节点,和当前的输出节点,填充子Benes网络的输出节点。

4:重复1-3步,直到填充完所有的节点路由信息。

下面,我们给出一个 B 8 B_8 B8网络路由的例子,输入为 [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] [1,2,3,4,5,6,7,8] [1,2,3,4,5,6,7,8],输出为 [ 2 , 6 , 5 , 8 , 4 , 7 , 1 , 3 ] [2, 6, 5, 8, 4, 7, 1, 3] [2,6,5,8,4,7,1,3].

首先,填充第一列和最后一列:
1

根据输入节点,我们知道,1-5,2-6,3-7,4-8 不能输入到同一个子Benes网络中;

根据输出节点,我们知道,2-4,6-7,5-1,8-3 不能来自同一个子Benes网络。

因此,我们得到一个顶点为 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } \{1,2,3,4,5,6,7,8\} {1,2,3,4,5,6,7,8},边为 { 1 − 5 , 2 − 6 , 3 − 7 , 4 − 8 , 2 − 4 , 6 − 7 , 5 − 1 , 8 − 3 } \{1-5, 2-6, 3-7, 4-8, 2-4, 6-7, 5-1, 8-3\} {15,26,37,48,24,67,51,83}的图。

我们对图进行2着色:

2着色

然后,我们根据着色结果填充下一步的输入,蓝色的根据网络输入到上面的 B 4 B_4 B4网络,橙色的输入到下面的 B 4 B_4 B4网络:

填充下一步输入

然后根据下一步的输入,我们知道需要填充的下一步输出中,2,5,7,8 一定来自上面的 B 4 B_4 B4网络,1,6,3,4 一定来自下面的 B 4 B_4 B4网络。

我们根据当前的输出,填充 B 4 B_4 B4网络的输出:
填充下一步的输出
下面,我们继续填充上面一个 B 4 B_4 B4网络,下面的 B 4 B_4 B4填充的方法是相同的。

上面一个 B 4 B_4 B4网络的输入为 [ 5 , 2 , 7 , 8 ] [5,2,7,8] [5,2,7,8],输出为 [ 2 , 7 , 5 , 8 ] [2,7,5,8] [2,7,5,8]

得到边为 { 5 − 7 , 2 − 8 , 2 − 5 , 7 − 8 } \{5-7,2-8,2-5,7-8\} {57,28,25,78}的图,然后进行2着色:

的2着色

填充 B 2 B_2 B2网络的输入:
b2网络的输入
因此,2,7一定来自下面的 B 2 B_2 B2网络,5,8 一定来自上面的 B 2 B_2 B2网络:

b2网络的输出填充
下面是完整的路由图:

完整路由图
使用Benes网络,每一层我们只需要两种旋转,再加上选择,就可以完成路由,从而实现置换重排。

参考文献

[1] https://blog.csdn.net/qq_19830591/article/details/127789767

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144648.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

优青博导团队提供生信分析整体解决方案丨组学技术服务、表观组分析、互作组分析、遗传转化实验、单细胞检测与生物医学

平民价格给您最优的技术服务——生物信息技术分析就找汇智生物 业务领域: 组学技术服务 、表观组分析、互作组分析、遗传转化实验、单细胞检测与生物医学 合作免费提供: 博导团队免费指导实验、免费解读实验结果、实验整体打包服务、免费论文润色 生物…

TAPD7.0焕新升级!助力企业数字化敏捷研发提效

近日,TAPD的7.0升级版本,不仅外观、引擎、协作焕新升级,大型产品规模化,敏捷‍‍‍‍‍‍‍‍更跨组织/地域,研发协作小团队更轻便。 腾讯TAPD7.0焕新升级! “外观”升级 导航革新:重塑导航栏…

windows10部署ChatTTS+Apifox调用

1 文件准备 准备好如下图所示的文件 2 修改ChatTTS_Win\ChatTTS\uilib\cfg.py 如下图所示,注释第34行,增加 WEB_ADDRESS 0.0.0.0:9998确保局域网内的其他设备也可以请求该服务。 3 启动服务 4 发送post请求 对应的请求内容如下: bash代…

字节推音乐生成神器 Seed-Music 支持多样化输入和精确控制

Seed-Music,字节跳动的最新音乐创作神器,能通过文字、音频等多种方式轻松生成音乐,仿佛拥有魔法般的魔力。它巧妙地融合了自回归语言模型与扩散模型,不仅确保了音乐作品的高品质,还赋予了用户对音乐细节的精准掌控能力…

【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

电商商品详情API接口对电商跨境电商企业运营的好处

为了获取更大利益,电商商家经常需要使用价格,ERP接口系统。价格接口对电商商家有多方面的好处,主要体现在以下几个方面: 1、价格接口系统可以帮助品牌和商家实现更加科学和精准的定价策略。通过实时获取多个主流电商平台&#xf…

基于SpringBoot的智能排课系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 (一)选题来源与背景 高校的每学期伊始,排课是教务处工作中的重中之重。安排合理无资源冲突(教师、教室和设备等教学资源)的课表是教务工作必须面临的问题。传统的人工…

【Python】练习:控制语句(二)第1关

第1关:分支结构基础实训 第一题第二题第三题第四题(※)第五题(※)第六题第七题 第一题 #第一题 for temp in [-280, -100, 0, 20, 120, 200]:#请在下面编写代码# ********** Begin ********** #if temp>-273.15:F9/…

使用Rust直接编译单个的Solidity合约

这里写自定义目录标题 使用Rust直接编译单个的Solidity合约前言预备知识准备工作示例 使用Rust直接编译单个的Solidity合约 前言 我们知道,我们平常开发Solidity智能合约时一般使用Hardhat框架,但是如果你是一个Rustacean (这是由 “Rust” 和 “crust…

SpringBoot项目同时集成Mybatis和Mybatis-plus框架

1. 背景 Mybatis-plus可以生成CRUD,减少开发中SQL编写量,但是某些情况下我们需要多表关联查询,这时候Mybatis可以手写SQL的优势就体现出来了,在实际开发中,项目里面一般都是Mybatis和Mybatis-Plus公用,但是…

<<编码>> 第 14 章 反馈与触发器(8)--带预设和清零的触发器 示例电路

带预设和清零的边缘触发 D 型触发器 info::操作说明 将 “清零” 置为高电平可将 Q 置为 0; 将 “预设” 置为高电平可将 Q 置为 1; 注: 如果两者同为高电平, 则清零占优, 应避免同时出现 其余操作同上 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhtt…

0基础跟德姆(dom)一起学AI 数据处理和统计分析04-Panda入门

* Pandas数据结构介绍 * Series对象 * DataFrame对象 * Series常见操作 * 常用属性 * 常用方法 * 布尔索引 * 运算 * DataFrame常见操作 * 常用属性 * 常用方法 * 布尔索引 * 运算 * 更改操作 --- 1.Pandas数据结构介绍 * 图解 * 解释 * **DataFrame…

STM32最小系统核心板-SZPT领跑团队-C4

目录 一、团队介绍 队伍介绍 二、stm32f103c8t6构成 (1)概要 (2)构成 三、电路设计 (1)电源电路 (2)晶振电路 (3)SWD接口电路 (4).复位电…

[Leetcode 543][Easy]-二叉树的直径-递归

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 取一个结点的最大直径就是取一个结点的左子树最大深度右子树最大深度之和,因此可以定义一个递归函数,作用是取一个结点的最大直径。这个函数中还实现了求左子树最大深度…

Find My资讯|AirPods 4标准版充电盒无扬声器,Find My查找不会发出声音

苹果 AirPods 4 国行版标准版 999 元,主动降噪款 1399 元。标准版充电盒未内置扬声器,降噪版内置扬声器可用于查找功能。 苹果 AirPods 4 搭载 H2 芯片,引入计算音频技术,充电盒支持 USB-C 充电,体积比前代缩小 10% 以…

yolo车位数据集

停车场车位检测数据集是一个非常有价值的数据资源,它对于开发和训练能够自动识别停车位是否被占用的计算机视觉系统至关重要。以下是对这样一个数据集的详细介绍,以及如何使用这个数据集来训练YOLO(You Only Look Once)这样的目标…

nvm安装实现node多版本的切换

nvm安装实现node多版本的切换 方式一 下载安装包安装下载安装包解压安装设置 nvm 环境变量查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本 方式二 一键脚本安装下载安装查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本nvm相关命令…

基于yolov5的不同颜色安全帽检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的不同颜色安全帽检测系统是一种利用深度学习技术,特别是YOLOv5目标检测算法的创新应用。该系统旨在提高施工现场的安全管理水平,通过实时识别和检测工人佩戴的安全帽颜色,实现对安全规范的精准监督。 YOLOv5作为一…

GeoGebra 與數學探索 3 GeoGebra 在微積分的探索與動態演示

Goal: GeoGebra 除了可以輕鬆的讓我們以即時動態反饋圖形的方式模擬探索幾何的問題, 或是幫我們驗證答案, 也可以進行數論、微積分、矩陣等等各方面的探索, 在問題尺度不大又需要即時以圖像視覺呈現探索過程的情況下, GeoGebra 其實優於以寫程式的方式進行探索. “Talk is che…

记录|如何对批量型的pictureBox组件进行批量Image设置

目录 前言一、问题表述二、批量化处理更新时间 前言 参考文章: 一、问题表述 问题就是上图所示,这些的命名风格统一,只是最后的数字是不同的。所以存在可以批量化进行处理的可能性。 二、批量化处理 private void SetPictureBoxImages(){for…