1. 程式人生 > >快速沃爾什變換詳解(FWT)

快速沃爾什變換詳解(FWT)

快速沃爾什變化(FWT)介紹

能看到這篇部落格的人,一定知道FWT是幹什麼的。(什麼?你不知道?) 
沒事,這裡有picks講FWT的一篇部落格。先點進去看一看。 
如果你看懂了,那麼恭喜你。如果你跟我一樣看不懂,那麼請繼續往下看。

這裡的A和B都是什麼呢?其實它們是一個多維的向量(如果你不知道向量是什麼,就把它當成陣列),下標從0開始。 
其中,

A=<a0,a1,...,a2k1> 
B=<b0,b1,...,b2k1> 
C=A@B

這裡我們定義 
A±B=<a0±b0,a1±b1,...,a2k1±b2k1>即對應位相加(減) 
A

B=<a0b0,a1b1,...,a2k1b2k1>即對應位相乘 
A@B(實在找不到靠譜的符號了。。)為A和B做卷積之後得到的結果,也是一個和原來大小一樣的向量。

注意到FWT做的是二進位制上的位運算,所以一定要把A和B補到2的整次冪次(即不足的地方填上0)。

我們要構造一個變換tf,使得tf(A)tf(B)=tf(C)。這個變換的物件是一個大小為2k的向量,變換出來的結果也是一個大小為2k的向量。

就以異或舉例。picks告訴我們

tf(A)=(tf(A

相關推薦

快速沃爾變換FWT

快速沃爾什變化(FWT)介紹 能看到這篇部落格的人,一定知道FWT是幹什麼的。(什麼?你不知道?)  沒事,這裡有picks講FWT的一篇部落格。先點進去看一看。  如果你看懂了,那麼恭喜你。如果你跟我一樣看不懂,那麼請繼續往下看。 這裡的A和B都是什麼呢?其實它們是一個多維的向量(如

BZOJ4589 Hard Nim快速沃爾變換FWT

std ems 加速 多少 mem 一次 ++ log 素數篩 這是我第一道獨立做出來的FWT的題目,所以寫篇隨筆紀念一下。 (這還要紀念,我太弱了) 題目鏈接: BZOJ 題目大意:兩人玩nim遊戲(多堆石子,每次可以從其中一堆取任意多個,不能操作就輸)。$T$ 組數據,

HDU 5977 Garden of Eden 樹形dp+快速沃爾變換FWT

就是 empty 代碼 -- vat 形式 什麽 水題 def CGZ大佬提醒我,我要是再不更博客可就連一月一更的頻率也沒有了。。。 emmm,正好做了一道有點意思的題,就拿出來充數吧=。= 題意 一棵樹,有 $ n (n\leq50000) $ 個節點,每個點都有一個顏色

Luogu4717 【模板】快速沃爾變換FWT

  https://www.cnblogs.com/RabbitHu/p/9182047.html   完全沒有學證明的慾望因為這個實在太好寫了而且FFT就算學過也忘得差不多了只會寫板子 #include<iostream> #include<cstdio> #include

BZOJ4589 Hard Nim快速沃爾變換模板

code 時間 ons include pre zoj logs for turn 終於抽出時間來學了學,比FFT不知道好寫到哪裏去。 #include <cstdio> typedef long long ll; const int N=65536,p=1

FWT快速沃爾變換學習筆記

class 方法 兩個 拼接 先來 位運算 isp 形式 ase FWT快速沃爾什變換學習筆記 1、FWT用來幹啥啊 回憶一下多項式的卷積\(C_k=\sum_{i+j=k}A_i*B_j\) 我們可以用\(FFT\)來做。 甚至在一些特殊情況下,我們\(C_k=\sum_

一個數學不好的菜雞的快速沃爾變換(FWT)學習筆記

spa 最長 ML form 相加 pre 證明 a* orm 一個數學不好的菜雞的快速沃爾什變換(FWT)學習筆記 曾經某個下午我以為我會了FWT,結果現在一丁點也想不起來了……看來“學”完新東西不經常做題不寫博客,就白學了 = = 我沒啥智商 ,網上的FWT博客我大多看

Codeforces 662C Binary Table快速沃爾變換

void 一個 很好 class force sum char s tps sca Problem 給定一個n(≤20)*m(≤100 000)的01矩陣,每次操作可以將一行或一列取反。 求最終1的最少個數。 Solution 前置技能:快速沃爾什變換(FWT)。 觀察到

洛谷.4717.[模板]快速沃爾變換(FWT)

題目連結 https://www.k-xzy.xyz/archives/7598 //285ms 3.53MB #include <cstdio> #include <cctype> #include <cstring> #include <algorithm&g

快速沃爾變換(FWT)

1前言 在之前學完了FFT稍微碼了一些題、也學習了一下NTT相關的知識之後,我覺得有必要學習一下FWT,這篇部落格就是闡述我對FWT的理解的 2介紹 2.1解決的問題 對於FFT,它的過程本質上是

Fast Walsh-Hadamard Transform——快速沃爾變換

進行 表達式 nsf for 進制 bsp 兩個 容易 美的 模板題:   給定$n = 2^k$和兩個序列$A_{0..n-1}$, $B_{0..n-1}$,求   $$C_i = \sum_{j \oplus k = i} A_j B_k$$   其中$\oplus$

編碼原理---變換編碼

mar 關於 詳解 tex 描述 原理 學習 編碼原理 watermark 本篇介紹編碼原理中的變換編碼。 一、變換的目的和作用: 變換編碼的作用是將空間域描述的圖像信號變換到頻率域,然後對變換後的系數進行編碼處理。一般來說,圖像在空間上具有較強的相關性,變換到頻率

快速沃爾變換

const ron 輸入輸出格式 return cst and spl add n) 快速沃爾什變換 題目背景 模板題,無背景 題目描述 給定長度為\(2^n\)兩個序列\(A,B\),設\(C_i=\sum_{j\oplus k=i}A_jB_k\) 分別當\(\oplu

SpringBoot-快速入門

一、Spring Boot 久聞Spring Boot大名,這兩天終於得空,學習了一把,發覺Spring Boot確實好用,那Spring Boot到底是什麼,又是怎麼好用呢? 什麼是Spring Boot 目前ssm框架還是比較常用的,其中的ss

淘寶JAVA中介軟體Diamond---簡介&快速使用

大家好,今天開始為大家帶來我們通用產品團隊的產品 —— diamond的專題,本次為大家介紹diamond的概況和快速使用。 一、概況 diamond是淘寶內部使用的一個管理持久配置的系統,它的特點是簡單、可靠、易用,目前淘寶內部絕大多數系統的配置,由diamond來進行統一管理。 diamond為

淘寶JAVA中介軟體Diamond1-簡介&快速使用

感謝有奉獻精神的人 轉自:http://my.oschina.net/u/435621/blog/270483?p=1 淘寶JAVA中介軟體Diamond詳解(一)---簡介&快速使用 大家好,今天開始為大家帶來我們通用產品團隊的產品 —— diamon

GLSL矩陣變換三、view matrix和projection matrix

我們在前一篇部落格GLSL矩陣變換詳解(二、旋轉變換、平移變換以及QMatrix4x4)的基礎上再增加對攝像機位置、姿態的設定功能,以及成像區域的定義功能。QMatrix4x4::lookAt(camera, center, upDirection)定義了攝像機的位置與姿態,

淺談快速沃爾變換

name puts 算法 多項式 lin 題目 namespace -i pla 快速沃爾什變換(fwt) \(fwt\)是一種快速計算位運算卷積的算法,一般包括按位或卷積,按位與卷積和異或卷積。 按位或(or)卷積 對於多項式\(A,B,C\),定義\(\oplus\)為

影象處理中的數學原理Part8 ——傅立葉變換的來龍去脈

全文目錄請見http://blog.csdn.net/baimafujinji/article/details/48467225千呼萬喚始出來,我們前面已經做了很多很多的準備,終於可以揭開傅立葉變換的面