piDD 置換DD

  • 置換集合向けの決定木ダイアグラムpiDD
  • BDD/ZDDは組み合わせ集合の空間の部分をうまく表現する仕組み
  • piDDは置換(順列)の集合の空間の部分をうまく表現する仕組み(らしい)
  • ルービックキューブの手順はpiDD表現できる
  • 組合せ→置換(順列)→群論
  • piDD の主な演算
    • Union
    • Intersection
    • Difference
    • special Cartesian product
  • 置換の合成
    • (1,2,3,4)->(4,2,1,3)と言う置換を
p <- c(4,2,1,3)
    • と表すと、p1して次にp2する(p1 p2の合成)は
comp.pi <- function(p1,p2){
	p2[p1]
}
k <- 4
p1 <- sample(1:k)
p2 <- sample(1:k)
comp.pi <- function(p1,p2){
	p2[p1]
}
k <- 4
p1 <- sample(1:k)
p2 <- sample(1:k)
p1
p2
comp.pi(p1,p2)
> p1
[1] 4 3 2 1
> p2
[1] 3 4 2 1
> comp.pi(p1,p2)
[1] 1 2 4 3
  • 単位置換:\pi_e
k<-4
pe <- 1:k
  • 置換のdimension
    • 置換のdimensionを、「動かされる要素のうち最大のもの」とする
    • 単位置換p_eのdimsnsionを0とするようにちょっと工夫しておく
dim.pi <- function(p){
	max(c(0,which(p-(1:length(p))!=0)))
}

p1 <- c(sample(1:4),5:8)
p1
dim.pi(p1)
dim.pi(1:4)
dim.pi <- function(p){
	max(which(p-(1:length(p))!=0))
}

p1 <- c(sample(1:4),5:8)
p1
dim.pi(p1)
> p1 <- c(sample(1:4),5:8)
> p1
[1] 4 1 3 2 5 6 7 8
> dim.pi(p1)
[1] 4
> dim.pi(1:4)
[1] 0
  • 置換の省略表記
    • (3,5,2,1,4,6,7,8)という置換のdimensionは 5 で、(3,5,2,1,4)という情報だけで十分なので、dimension分の長さだけを書くことにする
    • また、置換のセットを問題にするので、P=\{\pi_e,(2,1),(2,3,1)\}のような表記をする。これは\{(1,2,3),(2,1,3),(2,3,1)\}を表している
  • 置換集合のdimension
    • 置換集合のdimensionは置換集合の要素である置換のdimensionの最大値