Design Automation Algorithm
41분

PARTITIONING — 회로를 나누는 네 가지 방법 (KL · FM · EIG · FBB)

design-automationalgorithmpartitioningvlsigraph-algorithms
PARTITIONING · CH.02
LECTURE NOTE — VLSI PHYSICAL DESIGN, CHAPTER 2

회로 분할, 두 요구 사이에서
균형을 찾는 네 가지 길

게이트를 여러 파티션에 나누되 크기는 비슷해야 하고, 파티션을 가로지르는 네트는 적어야 합니다. KL · FM · EIG · FBB는 이 충돌을 서로 다른 수학적 대상 위에서 다룹니다. 이 노트는 네 알고리즘을 손으로 따라갈 수 있는 계산까지 함께 정리합니다.

파티션 A
abe
CUT
파티션 B
fgh
d
c
교환 전 cutsize 5 gain(d,c) = 2 교환 후 cutsize 3
01

큰 그림부터: 우리는 무엇을, 왜 나누는가WHY PARTITIONING

서로 자주 이야기해야 하는 사람 여덟 명을 두 사무실에 나눈다고 생각해 봅시다. 네 명씩 나누는 일 자체는 어렵지 않습니다. 그런데 대화가 필요할 때마다 다른 사무실로 이동해야 한다면요? 자주 협력하는 사람은 같은 방에 두고 싶어집니다. 그렇다고 모두 한 방에 넣으면 두 사무실로 나누라는 요구를 어기게 됩니다.

회로 분할, partitioning도 이 두 요구 사이에서 출발합니다. 게이트들을 여러 파티션에 나누되 파티션의 크기는 대략 비슷해야 합니다. 동시에 서로 다른 파티션에 걸쳐 있는 네트의 수, 즉 cutsize는 작아야 합니다. 자료는 지연이나 전력 같은 다른 목적도 언급하지만, 이번 장의 중심은 연결을 적게 자르면서 균형을 맞추는 문제입니다.

[칠판에 ‘연결 비용’과 ‘크기 균형’을 나란히 쓴다.]

첫 번째 질문입니다. “연결을 가장 적게 자르는 분할을 구하면 균형도 자연스럽게 맞지 않을까요?” 그렇지 않습니다. 연결이 적은 게이트 하나만 떼어내면 cutsize는 작을 수 있지만, 크기는 극단적으로 불균형해집니다. 오늘 등장할 네 알고리즘은 이 충돌을 서로 다르게 다룹니다.

네 알고리즘이 같은 문제를 다루는 서로 다른 방식
KL Kernighan–Lin

가중 무방향 그래프 위에서 양쪽에서 게이트 하나씩을 골라 자리를 바꿉니다.

FM Fiduccia–Mattheyses

하이퍼그래프를 그대로 두고 게이트 하나를 반대편으로 옮깁니다.

EIG Eigenvector

연결 구조를 행렬로 바꾸고, 고유벡터로 게이트를 일렬로 세운 뒤 그 줄을 잘라 봅니다.

FBB Flow-Based Bipartitioning

회로를 유량 네트워크로 바꿔 최소절단을 구하고, 균형이 안 맞으면 네트워크를 고쳐 다시 계산합니다.

그러니 이번 강의에서 실제로 배우는 것은 알고리즘 이름 네 개가 아닙니다. 같은 회로를 어떤 수학적 대상으로 표현할 것인가, 좋은 분할을 어떤 숫자로 평가할 것인가, 후보를 어떻게 탐색할 것인가, 그리고 균형 조건을 어디에 넣을 것인가입니다.

특히 세 가지 질문을 계속 붙잡아 주세요. “지금 세는 것은 네트인가, 그래프의 간선인가?” “이번 변화는 합법적인가?” “지금 상태가 최종적으로 채택할 상태인가?” 뒤의 예제에서 계산이 틀어지는 지점은 대부분 이 세 질문과 연결됩니다.

각 알고리즘에서는 공식을 외우기 전에 그 공식이 무엇을 세는지 먼저 보겠습니다. 계산의 목적은 답 하나를 얻는 것이 아니라, 다음 상태를 스스로 예측할 수 있게 되는 것입니다.

핵심 O/X 퀴즈

1. 회로 분할에서는 cutsize가 작기만 하면 파티션의 크기는 고려하지 않아도 된다.
X균형도 핵심 요구입니다.
2. KL과 FM은 현재 분할에서 게이트의 소속을 바꾸며 해를 개선하는 방법이다.
O교환과 이동이라는 차이는 있지만 둘 다 이동 기반입니다.
3. 네 알고리즘을 비교할 때는 목적함수뿐 아니라 회로 표현과 균형 처리 방식도 보아야 한다.
O같은 ‘분할’ 아래 서로 다른 모델과 탐색 방식이 들어 있습니다.
02

회로를 그래프로 바꾸면 무엇이 달라지는가k-CLIQUE MODEL

게이트는 정점으로 생각할 수 있습니다. 그렇다면 네트는 무엇일까요? 두 정점 사이의 간선이라고 답하기 쉽지만, 하나의 네트에는 세 개 이상의 게이트가 함께 연결될 수 있습니다. 그래서 회로의 네트를 그대로 표현하려면 여러 정점을 한꺼번에 묶는 hyperedge가 자연스럽습니다.

그런데 KL은 가중 무방향 그래프를 사용합니다. 여러 게이트를 묶는 네트를 보통 간선들로 바꿔야 하죠. 자료가 사용하는 변환이 k-clique 모델입니다. 게이트 k개가 들어 있는 네트를 완전그래프로 바꾸고, 각 간선에 1/(k−1)의 가중치를 줍니다. 이미 존재하는 간선이면 새 간선을 따로 두지 않고 가중치를 더합니다.

예를 들어 세 게이트가 하나의 네트에 들어 있다면 삼각형을 만들고 각 변에 0.5를 줍니다. 두 게이트짜리 네트라면 간선 하나의 가중치가 1입니다. 그림 2.1(b)의 가는 선과 굵은 선은 바로 0.5와 1을 구분합니다. 선이 굵다는 것은 연결이 두 번 잘린다는 뜻이 아니라, 그 간선을 자를 때 목적함수에 더하는 값이 크다는 뜻입니다.

[잠시 멈춘다.] “이렇게 변환했으니 원래 네트의 cutsize도 언제나 똑같이 보존될까요?”

이 질문에 쉽게 ‘그렇다’고 답하면 KL과 FM의 차이를 놓치게 됩니다. 변환식을 직접 계산해 보죠.

k개 중 r개가 왼쪽  ⇒  경계를 넘는 간선 r(k−r)개  ⇒  기여 = r(k−r)k−1 네 게이트를 둘씩 나누면 2×2/3 = 4/3. 하지만 원래 회로에서는 양쪽에 걸친 네트 하나이므로 네트 개수로 센 cutsize 기여는 1입니다.

따라서 앞으로 KL의 cutsize를 계산할 때는 잘린 간선의 개수가 아니라 잘린 간선의 가중치 합을 구해야 합니다. 그리고 그 값이 원래 회로의 잘린 네트 개수와 항상 같다고 생각하면 안 됩니다. 자료도 일반적인 회로의 모든 절단을 가중 무방향 그래프로 정확히 표현하는 데 한계가 있음을 설명하고, FM의 하이퍼그래프 표현을 대비시킵니다.

이 차이는 단순한 자료구조 취향이 아닙니다. 같은 회로를 다루더라도 무엇을 정확하게 보존하는지가 달라집니다. 모델을 바꾸면, 내가 실제로 최소화하는 숫자가 무엇인지 다시 확인해야 합니다.

핵심 O/X 퀴즈

1. k-clique 모델에서 한 네트가 만드는 각 간선의 가중치는 1/(k−1)이다.
O이 장에서 사용하는 변환 규칙입니다.
2. 여러 네트가 같은 두 게이트 사이에 간선을 만들면 기존 가중치를 덮어쓴다.
X기존 가중치에 새 가중치를 더합니다.
3. 가중 그래프의 cutsize는 경계를 가로지르는 간선 가중치의 합이다.
O간선 개수나 원래 네트 개수와 구분해야 합니다.
03

KL의 gain: 두 게이트를 바꾸면 얼마나 좋아지는가SWAP GAIN

KL의 출발점은 이미 주어진 균형 분할입니다. 왼쪽과 오른쪽에 같은 수의 셀이 있고, 한쪽에서 하나씩 골라 교환합니다. 그러면 셀 개수의 균형을 유지하면서 연결 관계만 바꿀 수 있습니다.

어떤 두 셀을 골라야 할까요? 모든 교환을 똑같이 볼 수는 없으니, 교환했을 때 cutsize가 얼마나 줄어드는지를 점수로 삼습니다. 이것이 gain입니다. 부호를 먼저 고정하겠습니다. gain이 양수면 개선, 0이면 변화 없음, 음수면 악화입니다. 따라서 새 cutsize = 이전 cutsize − gain입니다.

셀 x를 하나 보겠습니다. x와 반대쪽 파티션을 잇는 간선 가중치의 합을 외부 비용 Eₓ, 같은 파티션을 잇는 간선 가중치의 합을 내부 비용 Iₓ라고 합니다. x 혼자 반대쪽으로 옮긴다고 상상하면, 외부 간선들은 내부 간선으로 바뀌어 이득이고 내부 간선들은 절단 간선으로 바뀌어 손해입니다. 그래서 단독 이동의 변화량은 Eₓ−Iₓ로 읽을 수 있습니다.

gain(x, y) = (Ex − Ix) + (Ey − Iy) − 2c(x, y) c(x, y)는 두 셀을 잇는 간선의 가중치. 간선이 없으면 0이 되어 보정항도 사라집니다.

왜 마지막에 2c(x,y)를 뺄까요? 이 부분을 이해하면 공식을 오래 기억할 수 있습니다. x와 y는 교환 전에도 서로 반대편이고, 교환 후에도 서로 반대편입니다. 즉 둘을 잇는 간선은 실제로 계속 잘려 있습니다. 그런데 x 혼자 옮긴다고 계산할 때 그 간선이 사라지는 절단 비용으로 한 번 들어가고, y 혼자 옮긴다고 계산할 때도 한 번 더 들어갑니다. 실제로는 절약되지 않는 비용을 두 번 이득으로 셌으니, 두 배를 빼서 보정하는 것입니다.

첫 예제의 gain 계산
d
E − I = 1.5 − 0.5 = 1
c
E − I = 2.5 − 0.5 = 2
c(d, c)
0.5
gain(d, c)
1 + 2 − 2×0.5 = 2 — (e, c)도 gain이 2이므로 사전식 순서로 (d, c)를 선택합니다.

한 가지 더 짚겠습니다. 이 예제는 셀 수를 같게 유지하는 교환입니다. ‘한 개씩 교환한다’는 사실과 ‘서로 다른 실제 면적까지 항상 보존한다’는 주장은 같은 말이 아닙니다. 오늘의 손계산에서는 자료의 동일 크기 셀 분할을 따라가고, 뒤의 FM에서는 명시적인 면적 구간을 확인하겠습니다.

핵심 O/X 퀴즈

1. Eₓ−Iₓ가 크다는 것은 x의 현재 내부 연결보다 외부 연결의 가중치가 상대적으로 크다는 뜻이다.
O바깥 연결을 안으로 바꾸는 유인이 큽니다.
2. 교환 gain에서 2c(x,y)를 빼는 이유는 x와 y 사이의 간선이 교환 후 반드시 내부 간선이 되기 때문이다.
X그 간선은 교환 전후 모두 절단 간선이므로, 중복 계산한 이득을 제거합니다.
3. gain이 2인 교환을 수행하면 cutsize는 2 감소한다.
Ogain은 감소량으로 정의합니다.
04

KL의 pass: 끝까지 가되, 가장 좋았던 지점으로 돌아온다PASS MANAGEMENT

가장 좋은 교환을 했습니다. 그런데 다음 교환의 최대 gain이 음수입니다. 여기서 멈추면 될까요? KL의 중요한 아이디어는 “일단 더 가 보고, 나중에 어디까지 받아들일지 결정하자”입니다.

1
잠금 해제. pass를 시작할 때 모든 셀의 잠금을 풉니다.
2
최대 gain 교환. 잠기지 않은 셀들 중 서로 다른 파티션에 있는 쌍의 gain을 비교하고, 최대인 쌍을 교환한 뒤 두 셀을 잠급니다.
3
음수도 진행. 최대 gain이 음수여도 진행하며, 각 단계의 gain과 cutsize를 기록합니다.
4
앞부분만 채택. 누적 gain이 가장 큰 지점, 즉 cutsize가 가장 작았던 지점까지만 받아들입니다. 시작 상태도 후보이므로 개선이 없으면 아무 교환도 채택하지 않을 수 있습니다.
[칠판에 ‘탐색한 상태 ≠ 채택할 상태’라고 쓴다.]

자료의 예제를 따라가겠습니다. 초기 분할은 왼쪽 {a,b,d,e}, 오른쪽 {c,f,g,h}, 초기 cutsize는 5입니다. 첫 교환은 방금 계산한 (d,c)이고 gain은 2입니다. 두 번째 교환에서는 잠긴 d와 c를 후보에서 빼고 다시 계산하여 (b,g)를 얻습니다.

Table 2.4 — KL 한 pass의 기록
단계교환gain누적 gaincutsize
시작없음—05
1d ↔ c223
2b ↔ g023
3a ↔ f−114
4e ↔ h−105
초기값과 마지막 값은 모두 5지만 pass에서 발견한 최솟값은 3입니다. 처음 나타난 최소절단을 채택하면 첫 교환까지만 남겨 {a,b,c,e} / {d,f,g,h}를 얻습니다.

여기서 질문 하나 더. “음수 gain을 허용한다면서, 이 예제에서는 결국 음수 교환을 모두 취소했네요?” 맞습니다. 음수 이동을 허용한다는 것은 반드시 음수 이동을 최종 해에 남긴다는 뜻이 아닙니다. 탐색 중 일시적인 악화를 허용하고, 그 뒤 더 큰 개선이 나오면 그 악화까지 포함한 앞부분을 채택할 수 있다는 뜻입니다.

이 예제처럼 모든 셀이 정확히 한 번씩 반대편으로 가면 마지막에는 처음의 좌우가 뒤집힙니다. 절단값이 초기값으로 돌아오는 것도 자연스럽습니다. 이 관찰은 검산에 쓸 수 있지만, 중요한 것은 마지막 값이 아니라 중간 최솟값입니다.

개선된 분할을 얻으면 다시 잠금을 풀고 다음 pass를 수행합니다. 더 이상 초기값보다 개선되는 지점이 없으면 종료합니다. KL은 ‘현재 최대 gain’이라는 지역적 선택과 ‘최선의 앞부분만 수용’이라는 pass 관리가 결합된 방법입니다.

핵심 O/X 퀴즈

1. KL에서는 현재 최대 gain이 음수이면 반드시 즉시 pass를 끝낸다.
X음수 gain도 탐색할 수 있습니다.
2. pass가 끝난 뒤에는 마지막 상태가 아니라, 최선의 누적 gain을 만든 교환의 앞부분을 채택한다.
O이동 순서의 앞부분을 선택하는 것이 핵심입니다.
3. 이 예제의 초기·마지막·최소 cutsize는 각각 5, 5, 3이다.
O마지막에 악화되었어도 중간 개선은 남길 수 있습니다.
05

FM의 출발점: 네트가 사라지는가, 새로 잘리는가FS − TE

KL에서는 두 셀을 골라 교환했습니다. FM은 셀 하나를 옮깁니다. 또 회로를 가중 그래프로 바꾸지 않고 하이퍼그래프로 직접 다룹니다. pass와 gain이라는 생각은 이어받지만, 평가 대상과 기본 동작이 달라지는 것입니다.

gain(x) = FS(x) − TE(x) FS(x): x가 속한 네트 중 현재 출발 파티션에 x만 남아 있는 네트의 수 · TE(x): x가 속한 네트 중 모든 셀이 현재 출발 파티션 안에 있는 네트의 수

왜 빼면 될까요? x가 이쪽의 마지막 셀인 네트에서는 x를 옮기면 모든 셀이 반대쪽으로 모입니다. 잘리던 네트가 더 이상 잘리지 않으므로 이득 1입니다. 반대로 모두 이쪽에 있던 네트에서 x만 옮기면 이제 네트가 양쪽에 걸칩니다. 새 절단이 생겨 손해 1입니다. 나머지는 이동 전후 모두 잘려 있어 변화가 없습니다.

FM 예제의 회로 — 여덟 셀, 여섯 네트
네트
n₁={a,c,e} · n₂={b,c,d} · n₃={c,f,e} · n₄={g,f,h} · n₅={d,f} · n₆={g,e}
초기 분할
왼쪽 {a,c,d,g} / 오른쪽 {b,e,f,h} — 여섯 네트가 모두 양쪽에 걸치므로 초기 cutsize는 6
초기 gain
a부터 h까지 차례대로 0, 1, 1, 1, 2, 1, 2, 0

셀 c를 보죠. c는 n₁, n₂, n₃에 들어 있고 그중 n₃={c,f,e}에서만 c가 왼쪽의 유일한 셀입니다. 그러므로 FS(c)=1입니다. 세 네트 모두 현재 잘려 있으므로 TE(c)=0이고 gain(c)=1입니다. 셀 g는 더 좋습니다. n₄와 n₆ 모두에서 왼쪽에 g만 있으니 FS(g)=2, 내부 네트는 없어서 gain(g)=2입니다. 오른쪽의 e 역시 n₁과 n₆에서 유일한 오른쪽 셀이므로 gain(e)=2입니다. 반면 a는 어느 네트의 절단도 없애지 못하고 새 절단도 만들지 않아 gain(a)=0입니다.

숫자를 외우는 대신 각 네트에 대해 두 가지만 물어보세요. “마지막 한 명이 나가는가?” 그리고 “모두 모여 있던 곳에서 처음 한 명이 나가는가?” 이것이 FS−TE를 눈으로 계산하는 방법입니다.

핵심 O/X 퀴즈

1. FS(x)에 포함되는 네트는 x가 현재 파티션에 있는 유일한 셀인 네트이다.
Ox가 떠나면 기존 절단이 사라집니다.
2. TE(x)에 포함되는 네트는 x를 옮겼을 때 새 절단이 생기는 쪽으로 기여한다.
O그래서 TE를 뺍니다.
3. x가 포함된 네트가 이동 전후 모두 양쪽에 걸쳐 있으면 그 네트는 gain에 +1을 준다.
X절단 여부가 변하지 않으므로 기여는 0입니다.
06

FM의 실행 장치: 버킷, 합법성, 그리고 국소 갱신BUCKET LIST

gain이 가장 큰 셀을 찾았으니 바로 옮기면 될까요? FM에서는 한 번 더 확인해야 합니다. 셀 하나만 옮기므로 크기 균형이 깨질 수 있습니다. 자료는 이동 후에도 면적 제약을 만족하는 셀만 합법적이라고 정의합니다. 최대 gain이라는 조건은 합법적인 후보들 안에서 적용해야 합니다.

예제의 허용 구간은 [3,5]입니다. 각 파티션이 셀을 세 개 이상, 다섯 개 이하 가져야 한다는 뜻입니다. 4 대 4에서 한 셀을 옮겨 5 대 3을 만드는 것은 가능합니다. 그러나 거기서 작은 쪽의 셀을 큰 쪽으로 또 옮겨 6 대 2를 만드는 것은 불가능합니다.

다음은 bucket입니다. gain이 같은 셀들을 같은 칸에 모아 둡니다. 이 예제에서 한 셀이 속하는 네트 수의 최댓값 Pmax는 3이므로 버킷의 gain 범위는 −3부터 3까지입니다. 여기서 Pmax는 ‘한 네트에 들어 있는 셀 수의 최댓값’이 아니라 ‘한 셀에 접한 네트 수의 최댓값’입니다.

Figure 2.7 — 초기 버킷 (왼쪽 / 오른쪽 분리)
왼쪽 +2
g
왼쪽 +1
c, d
왼쪽 0
a
오른쪽 +2
e
오른쪽 +1
b, f
오른쪽 0
h

그런데 한 셀을 옮길 때마다 모든 셀의 gain을 처음부터 계산해야 할까요? 아닙니다. x의 이동이 직접 바꾸는 것은 x가 들어 있는 네트들의 상태입니다. 따라서 그 네트를 공유하는, 아직 잠기지 않은 이웃들의 gain만 갱신하고 값이 바뀐 셀은 해당 버킷 칸으로 옮겨 줍니다. 잠긴 셀은 선택 후보에서 빠지지만 회로 자체에서 사라지는 것은 아닙니다. 그 셀의 위치는 여전히 다른 셀의 gain에 영향을 줍니다.

자료는 버킷과 부분 갱신을 KL 대비 중요한 속도 개선으로 설명하며 복잡도를 O(n)과 O(n³)로 요약합니다. 다만 이 발췌본에는 네트의 크기까지 따지는 전체 복잡도 증명이 없습니다. 여기서 확실히 붙잡을 구조는 쌍 전체를 반복 평가하는 대신, 셀을 관리하고 영향받은 부분만 갱신한다는 점입니다.

핵심 O/X 퀴즈

1. FM은 전체 셀 중 gain이 가장 큰 셀이면 면적 제약과 무관하게 이동시킨다.
X합법적인 이동이어야 합니다.
2. 버킷 범위에 쓰이는 Pmax는 이 예제에서 한 셀이 속하는 네트 수의 최댓값이다.
O예제에서는 3입니다.
3. 잠긴 셀은 이동 후보에서 제외되지만, 그 셀의 위치는 다른 셀의 gain 계산에 남는다.
O잠금은 회로 삭제가 아니라 재선택 금지입니다.
07

FM 한 pass 완주하기: 가장 큰 gain을 못 고르는 순간EIGHT LEGAL MOVES

시작은 왼쪽 {a,c,d,g}, 오른쪽 {b,e,f,h}, cutsize 6입니다. 최대 gain은 e와 g의 2이고 두 이동 모두 합법적입니다. 알파벳 순서로 e를 오른쪽에서 왼쪽으로 옮깁니다. 크기는 5 대 3, cutsize는 4가 됩니다.

e를 잠근 뒤 이웃 a, c, g, f만 갱신합니다. 새 gain은 각각 −1, −1, 0, 2입니다. 여기서 멈추고 질문하겠습니다. “이제 gain이 2인 f를 옮기면 되겠죠?” 아닙니다. f는 오른쪽에 있고, 오른쪽은 이미 세 개뿐이므로 f를 왼쪽으로 보내면 6 대 2가 됩니다. 따라서 합법적인 후보 중 gain이 가장 큰 d를 옮깁니다.

Table 2.5 — FM 한 pass의 여덟 이동
단계이동 셀gain누적왼쪽:오른쪽cutsize
시작없음—04:46
1e225:34
2d134:43
3b035:33
4g034:43
5a−123:54
6f−114:45
7h015:35
8c−104:46
초기·마지막·최소 cutsize는 6, 6, 3. 최솟값은 2·3·4번째 이동 뒤에 나타나며, 첫 최소 지점을 채택하면 e와 d의 이동만 남겨 왼쪽 {a,c,e,g} / 오른쪽 {b,d,f,h}를 얻습니다.

표의 중간을 더 따라가 보면 결정의 근거가 보입니다. 두 번째 이동 뒤에는 b, c, f의 gain이 모두 0으로 갱신되고, 동률이므로 알파벳이 빠른 b를 옮깁니다. 네 번째에는 gain 0인 g, h, f가 눈에 들어오지만 h와 f는 작은 오른쪽에 있어 왼쪽으로 갈 수 없으므로 왼쪽의 g를 옮깁니다. 여섯 번째에는 c의 gain이 0으로 회복되었는데도 c가 작은 왼쪽에 있어 선택하지 못하고, 오른쪽의 f를 골라 cutsize가 5로 올라갑니다.

이 예제에서 gain 계산만큼 중요한 것은 결정 순서입니다. 먼저 잠기지 않았는지 확인하고, 이동 후 면적이 합법적인지 확인하고, 그 후보들 사이에서 gain을 비교합니다. 마지막에 동률 규칙을 적용합니다. 이 순서를 뒤집으면 숫자를 정확히 계산하고도 다른 답을 냅니다.

KL의 초기값 5와 FM의 초기값 6도 함부로 비교하지 마세요. 두 예제의 초기 분할 자체가 다릅니다. 알고리즘 이름 옆의 숫자만 비교해서 어느 쪽이 우수하다고 결론 내릴 수는 없습니다. 오늘 비교할 것은 동작 원리입니다. KL은 쌍을 교환하고, FM은 합법적인 단일 셀을 이동하며, 둘 다 pass의 최선의 앞부분을 남깁니다.

핵심 O/X 퀴즈

1. 첫 이동 뒤 f의 gain이 가장 커도, 면적 제약 때문에 f를 선택하지 못한다.
Of를 옮기면 6 대 2가 됩니다.
2. 이 pass에서 cutsize가 3인 상태는 정확히 한 번만 나타난다.
X두 번째부터 네 번째 이동 뒤까지 세 번 나타납니다.
3. FM도 음수 gain 이동을 탐색한 뒤, 최선의 앞부분만 채택할 수 있다.
OKL에서 이어받은 pass의 핵심입니다.
08

EIG의 질문: 좋은 순서를 찾으면 분할이 쉬워질까RATIO CUT

지금까지는 한 번에 무엇을 움직일지 고민했습니다. EIG는 질문을 바꿉니다. “회로 전체의 연결을 반영하여 셀들을 일렬로 세운다면, 그 줄을 자르는 방식으로 좋은 분할을 찾을 수 있지 않을까?” 이제 이동 순서가 아니라 정점의 배치 순서를 구합니다.

ρ(X, Y) = c(X, Y)|X| · |Y| 분자는 cutsize, 분모는 두 파티션의 정점 수를 곱한 값. 절단 비용과 크기 균형을 하나의 값으로 함께 평가합니다.

왜 곱으로 나눌까요? 전체 정점 수가 같을 때 1 대 9의 곱은 9이고 5 대 5의 곱은 25입니다. 분자가 같다면 균형 잡힌 쪽의 ratio cut이 더 작습니다. 그러나 분자가 같다는 조건을 잊으면 안 됩니다. 하나만 떼어낼 때 cutsize가 매우 작다면 불균형한 분할이 여전히 이길 수 있습니다.

ratio cut은 균형을 선호하도록 평가에 반영하는 것이지, 반드시 정확히 반으로 나누라는 강제 조건이 아닙니다. FM의 [3,5]처럼 어떤 이동을 금지하는 제약과는 역할이 다릅니다. 실제로 뒤의 EIG 예제에서는 1 대 9 분할이 최소 ratio cut을 얻습니다.

1
그래프로 변환. 회로를 k-clique 기반 가중 그래프로 바꿉니다. 이 절의 계산은 원래 하이퍼그래프가 아니라 변환한 그래프의 cutsize를 사용합니다.
2
라플라시안 구성. 그 그래프의 라플라시안 행렬을 만듭니다.
3
둘째 고유벡터. 두 번째로 작은 고유값에 대응하는 고유벡터를 구하고, 좌표값 순서로 정점을 정렬합니다.
4
n−1곳 비교. 첫 정점 뒤부터 마지막 직전까지 n−1곳을 잘라 ratio cut을 비교합니다.

고유벡터가 분할을 바로 결정하는 것이 아니라, 분할 후보를 만들기 좋은 순서를 제공합니다. 따라서 음수 좌표와 양수 좌표 사이 한 곳만 자르는 것으로 이 자료의 절차를 대신하면 안 됩니다.

핵심 O/X 퀴즈

1. 이 자료의 ratio cut은 cutsize를 두 파티션 크기의 곱으로 나눈 값이다.
O목적함수의 정규화를 정확히 기억해야 합니다.
2. ratio cut을 최소화하면 반드시 정확히 절반씩 나뉜다.
X분자의 감소가 불균형의 불이익을 이길 수 있습니다.
3. EIG는 고유벡터로 얻은 순서에서 n−1개의 절단 위치를 평가한다.
O부호가 바뀌는 위치 하나만 보는 것이 아닙니다.
09

라플라시안: 연결 구조를 좌표로 읽기Q = D − A

행렬을 거대한 숫자판으로 보지 마세요. 각 행이 한 정점의 연결 정보를 담고 있다고 읽으면 됩니다. 자료는 인접행렬 A와 차수행렬 D를 만들고 라플라시안을 Q = D − A로 정의합니다. A의 원소 aᵢⱼ는 간선 가중치이고, D의 대각 원소 dᵢᵢ는 정점 i에 접한 간선 가중치의 합입니다.

Figure 2.18–2.20 — 정점 a의 행 읽기
연결
a는 d와 f에 각각 가중치 0.5로 연결됩니다.
A의 a행
d 자리와 f 자리에 0.5
D의 a 대각
0.5 + 0.5 = 1
Q의 a행
자기 자리에 1, d와 f 자리에 −0.5 — 행의 합은 0입니다.

양수 대각 원소는 연결량 전체를, 음수 비대각 원소는 이웃과의 연결을 나타냅니다. 각 행의 합이 0인 이유는 자기 연결량의 합에서 이웃별 연결량을 모두 빼기 때문입니다. 정점 i의 일차원 좌표를 xᵢ라고 놓고 Q의 정의를 전개하면 다음 식을 얻습니다.

xTQx = Σ{i,j}∈E aij (xi − xj)2 연결된 정점들의 좌표 차이를 제곱하고 가중합한 값. 줄로 연결된 물체를 상상하면, 강하게 연결된 물체를 멀리 떼어 놓을수록 비용이 커집니다.

여기서는 원문 설명의 생략도 구분해야 합니다. 자료는 좌표 제곱합이 1인 정규화를 설명하면서 둘째 고유벡터의 배치를 소개합니다. 그러나 그 정규화 하나만 적으면 모든 좌표를 1/√n으로 같게 둔 경우도 허용되어 위 비용이 0이 됩니다. 따라서 ‘모두 같은 위치’인 상수 방향을 제외하는 의미와 좌표 크기를 정규화하는 의미는 구별해야 합니다. 이는 Q의 정의로부터 확인한 수학적 점검이며, 발췌본이 제약 조건의 전체 유도를 제공한다는 뜻은 아닙니다.

자료의 실제 알고리즘은 두 번째로 작은 고유값의 고유벡터를 선택합니다. 개요에는 Lanczos 방법이 제시되고 수치 예제에서는 Matlab 계산 결과를 사용합니다. 우리가 손으로 따라갈 핵심은 고유값 계산기 내부가 아니라, 얻어진 벡터의 각 성분을 해당 셀의 좌표로 해석하고 정렬하는 단계입니다. 또 책의 행렬에는 0.33, 0.58 같은 소수 표기와 그 합인 2.99, 3.99가 사용되므로, 뒤의 표를 재현할 때는 이 제시값을 기준으로 계산합니다.

핵심 O/X 퀴즈

1. D의 대각 원소는 해당 정점에 접한 간선들의 가중치 합이다.
O단순한 이웃 개수와 구분합니다.
2. Q=D−A이므로, 서로 연결된 두 정점에 대응하는 비대각 원소에는 음의 가중치가 들어간다.
OA의 연결 가중치를 빼기 때문입니다.
3. EIG에서 고유벡터의 성분은 이 예제의 일차원 정점 좌표로 해석한다.
O이 좌표를 정렬하여 분할 후보를 만듭니다.
10

EIG 예제: 열 개의 정점, 아홉 개의 절단 후보Table 2.6

자료의 둘째 고유값은 0.6281입니다. 각 정점의 좌표는 a −0.6346, b 0.1605, c 0.5711, d −0.1898, e 0.2254, f −0.2822, g 0.0038, h 0.1995, i −0.1641, j 0.1104입니다. 좌표가 작은 것부터 세우면 순서 Z는 다음과 같습니다.

Z = ( a, f, d, i, g, j, b, h, e, c ) 그림 2.21은 이 정점들을 수평선 위에 놓은 모습입니다. 이 줄을 아홉 곳에서 잘라 봅니다.

첫 후보부터 직접 계산하죠. a에서 바깥으로 나가는 간선은 a–d와 a–f이며 둘 다 0.5입니다. cutsize는 1이고 ratio cut은 1/(1×9)=0.1111입니다. 첫 두 셀 a, f를 묶으면 cutsize가 3으로 커지고 ratio cut은 3/(2×8)=0.1875입니다. 더 많은 셀을 묶었는데도 목적함수는 나빠졌습니다. 분모뿐 아니라 분자도 함께 바뀌기 때문입니다.

Table 2.6 — 아홉 개의 절단 후보
Z의 앞부분 길이cutsize크기 곱ratio cut
11.001×90.1111
23.002×80.1875
33.003×70.1429
43.004×60.1250
53.495×50.1396
63.826×40.1592
73.827×30.1819
82.998×20.1869
91.009×10.1111
최솟값은 양 끝의 0.1111 — a 하나를 분리하거나 c 하나를 분리하는 경우입니다. 정확히 5 대 5인 {a,f,d,i,g} / {j,b,h,e,c}는 0.1396입니다.

원문 수치의 불일치 — 같은 페이지 하단 설명에는 5 대 5 분할의 값이 0.1369로 적혀 있지만, 표 2.6과 앞선 계산에는 0.1396이 적혀 있습니다. 주어진 cutsize 3.49를 25로 나눈 결과도 0.1396입니다. 따라서 이 노트는 표와 나눗셈에 맞는 0.1396을 사용합니다.

마지막으로 둘째 고유값은 어디에 쓸까요? 이 자료의 ratio cut 정의에서는 하한이 λ₂ 자체가 아니라 λ₂/n입니다. n=10이므로 하한은 0.6281/10 = 0.06281이고, 표의 모든 값은 이보다 큽니다. 하한이라는 것은 그보다 내려갈 수 없다는 기준이지, 이번에 구한 값과 반드시 같아진다는 뜻은 아닙니다. 또 지금 ‘최소’라고 부른 값은 이 순서에서 만든 아홉 후보 중 최솟값이며 모든 가능한 분할을 열거한 것이 아닙니다.

핵심 O/X 퀴즈

1. 이 예제의 최소 ratio cut 후보들은 1 대 9 또는 9 대 1로 불균형하다.
O목적함수만으로 정확한 균형이 강제되지 않습니다.
2. 표에 주어진 5 대 5 분할의 값은 3.49/25 = 0.1396이다.
O본문 일부의 다른 표기와 구분해야 합니다.
3. 이 자료의 정의에서 ratio cut의 하한은 0.6281 자체이다.
X정점 수로 나눈 0.06281입니다.
11

FBB의 모델: 네트 하나를 용량 1의 다리로 표현하기BRIDGING EDGE

앞에서는 좋은 이동을 찾거나 좋은 정점 순서를 찾았습니다. 이번에는 max-flow min-cut 관계를 이용합니다. 다만 회로 네트를 평범한 간선 하나로 바꾸는 것으로는 충분하지 않습니다. 여러 단자를 가진 네트가 잘릴 때 비용이 한 번만 발생하도록 모델을 만들어야 합니다.

1
보조 정점 두 개. 네트 n={v₁,…,vk}마다 n_in과 n_out을 추가합니다. 그림 2.22와 2.24의 작은 사각형이 이 보조 정점이며, 셀이 새로 생겼다는 뜻이 아닙니다.
2
다리 간선. 두 보조 정점 사이에 n_in → n_out 방향의 용량 1 간선을 둡니다. 이것이 bridging edge입니다.
3
무한대 간선. 모든 vi에서 n_in으로, 그리고 n_out에서 모든 vi로 용량 무한대의 간선을 연결합니다. 방향까지 함께 기억해야 합니다.

왜 이런 우회 구조를 쓸까요? 정의에서 직접 확인해 봅시다. 어떤 셀은 소스 쪽 S에 있고 같은 네트의 다른 셀은 싱크 쪽 T에 있다고 합시다. S에 있는 셀에서 n_in으로 무한대 간선이 있으므로, 유한한 절단을 만들려면 n_in도 S에 두어야 합니다. 또 n_out에서 T의 셀로 무한대 간선이 있으므로 n_out은 T에 두어야 합니다. 그러면 용량 1의 다리 간선이 S에서 T로 건너갑니다. 네트가 양쪽으로 갈라지면 바로 이 다리에서 비용 1을 지불하는 것입니다. 반대로 그 네트의 셀들이 모두 같은 쪽에 있다면 보조 정점들도 그쪽에 두어 절단 비용을 0으로 만들 수 있습니다.

이것이 모델링의 핵심입니다. 네트에 셀이 몇 개 들어 있든 잘리면 1, 잘리지 않으면 0이라는 비용을 최소절단에 표현합니다. KL의 완전그래프처럼 분리된 셀 쌍의 수에 따라 기여가 달라지는 방식과 구별됩니다.

여기서 ‘모델이 네트 절단 비용을 표현한다’는 사실과 ‘균형까지 갖춘 최적 분할을 한 번에 얻는다’는 주장을 섞으면 안 됩니다. 이 모델에서 s와 t를 지정하고 최대유량을 구하면 우선 s와 t를 분리하는 최소절단을 얻습니다. 그 절단의 양쪽 크기가 적절한지는 아직 확인하지 않았습니다.

핵심 O/X 퀴즈

1. FBB의 네트 변환은 네트마다 보조 정점 두 개와 용량 1의 다리 간선을 만든다.
O다리 간선이 네트 절단 비용을 맡습니다.
2. 셀과 보조 정점을 잇는 무한대 용량 간선의 방향은 중요하지 않다.
X강제되는 소속 관계는 방향에서 나옵니다.
3. 하나의 네트가 양쪽 파티션에 걸치면, 유한한 최소절단에서 그 네트의 다리로 비용 1을 표현할 수 있다.
O여러 단자를 가진 네트를 한 번의 비용으로 처리하는 핵심입니다.
12

최소절단만으로는 부족하다: 균형을 향해 소스와 싱크를 키우기MERGE & REPEAT

최소절단 알고리즘이 아주 작은 절단을 찾았습니다. 그런데 소스 쪽에는 셀이 하나뿐입니다. 알고리즘이 실패한 것일까요? s와 t를 적은 비용으로 분리하라는 문제에는 성공했지만, 우리가 원하는 균형 조건까지 만족한 것은 아닙니다.

FBB는 최대유량을 계산한 뒤 얻을 수 있는 최소절단 후보들 중 균형이 좋은 분할을 살펴봅니다. 그중 면적 조건을 만족하는 것이 있으면 종료합니다. 없다면 현재 경계를 바탕으로 정점들을 병합하고 최대유량을 다시 계산합니다.

어느 쪽이 작은가에 따라 달라지는 병합
소스가 작을 때
잘린 네트에 속하면서 반대편에 있는 셀 v를 골라 X의 셀들과 합쳐 새 소스로 만듭니다. 다음 계산에서는 이 묶음을 갈라놓을 수 없으므로 아주 작은 소스 쪽만 떼어내는 분할을 반복하지 않게 됩니다.
소스가 클 때
잘린 네트에 속한 소스 쪽 셀 v를 골라 싱크 쪽 파티션과 합쳐 새 싱크로 만듭니다.
기억법
어느 경우든 작은 쪽이 경계 너머의 셀을 흡수한다고 생각하면 절차를 기억하기 쉽습니다.

병합은 물리적인 셀 삭제가 아닙니다. 그래프에서는 하나의 정점으로 보이더라도 그 안에 들어 있는 원래 셀들의 면적은 남습니다. 뒤의 예제에서 s가 a와 d를 합친 정점이면, s라는 기호 하나를 보고 면적 1로 세면 안 됩니다.

또 최대유량에서 포화된 네트라고 해서 그것 하나를 지우면 반드시 s와 t가 분리되는 것은 아닙니다. 포화는 흐름에 대한 정보이고, 절단은 모든 s–t 연결을 끊는 조건입니다. 자료의 예제는 포화 네트들 가운데 실제로 분리를 만드는 조합을 확인합니다.

반복 계산이 너무 비싸지는 않느냐는 질문도 자연스럽습니다. 자료는 이전 반복에서 찾은 증가 경로를 재활용하여 전체 반복의 점근적 시간복잡도를 단일 최대유량 계산과 같은 차수로 유지하는 점을 강조합니다. 매번 아무 정보 없이 처음부터 시작하는 방식으로 이해하면 안 됩니다. 병합 후보는 일반 설명에서는 무작위 선택을 사용하다가 균형에 가까워지면 후보들을 더 자세히 조사하며, 손계산 예제는 알파벳 순서를 지정합니다.

핵심 O/X 퀴즈

1. s–t 최소절단은 별도의 조건 없이도 면적 균형을 보장한다.
X최소절단과 균형은 별개입니다.
2. 소스 쪽이 너무 작으면, 절단 네트의 반대편 셀을 소스 쪽과 병합하여 다음 계산에 반영한다.
O작은 쪽을 키우는 방향의 수정입니다.
3. 여러 셀을 병합한 정점의 면적은 원래 셀들의 면적을 고려해야 한다.
O정점 기호 수와 실제 셀 수를 혼동하면 안 됩니다.
13

FBB 예제 완주하기: 유량 1, 2, 3이 의미하는 것Figure 2.23 — Table 2.9

자료의 그림 2.23에는 a부터 i까지 아홉 셀이 있습니다. 면적 조건은 [4,5]이므로 4 대 5 또는 5 대 4로 나누어야 합니다. 처음 소스는 a, 싱크는 i이고, 병합할 셀은 알파벳 순서로 고릅니다.

1
최대유량 1. 그림 2.25의 경로에서 n₁, n₄, n₇이 포화됩니다. 하지만 표 2.7을 보면 n₄나 n₇ 하나만 제거해서는 소스와 싱크가 분리되지 않습니다. 유효한 최소절단은 n₁을 자르는 경우이고, a 하나가 나머지 여덟 셀에서 떨어집니다.
2
소스 병합. 크기 1은 하한 4보다 작습니다. 절단 네트 n₁={a,d,f}의 반대편 셀은 d와 f이고, 알파벳 순서로 d를 골라 a와 병합합니다. 이제 s는 {a,d}를 대표합니다.
3
최대유량 2. 포화 네트는 n₁, n₆, n₇, n₄, n₅입니다. 표 2.8은 후보 조합을 비교하여 n₇과 n₅를 함께 자르는 분할을 얻습니다. 싱크 쪽에는 i만 남고, 표기상 소스 쪽 {s,b,c,e,f,g,h}는 s를 펼치면 여덟 셀입니다.
4
싱크 병합. 이번에는 소스 쪽이 너무 큽니다. 잘린 n₇, n₅에 속한 소스 쪽 후보 g, h, e 중 알파벳 순서로 e를 선택해 i와 병합하여 t={e,i}로 만듭니다.
5
최대유량 3. 표 2.9의 절단 후보들을 비교하면 균형을 만족하는 세 분할이 나옵니다.
Table 2.9 — 병합 정점을 원래 셀로 펼친 결과
절단 네트소스 쪽 원래 셀싱크 쪽 원래 셀크기
n₆, n₄, n₂{a,b,d,f}{c,e,g,h,i}4:5
n₇, n₄, n₂{a,b,d,f,h}{c,e,g,i}5:4
n₇, n₅, n₂{a,d,f,g,h}{b,c,e,i}5:4
세 결과 모두 cutsize는 3입니다. n₂는 이 단계의 s–t 최소절단에서 어차피 잘리므로, b의 위치를 조절하여 면적 균형을 개선할 수 있습니다.

같은 최소절단 비용을 갖더라도 셀을 배치하는 자유도가 남고, 그 자유도를 균형 개선에 사용할 수 있다는 점을 보세요. 처음 유량 1에서 마지막 유량 3으로 커졌으니 알고리즘이 나빠진 것 아니냐고 물을 수도 있습니다. 하지만 우리가 처음 원했던 것은 단순히 가장 작은 s–t 절단이 아니라 균형을 만족하는 분할이었습니다. 값 1의 분할은 1 대 8이어서 사용할 수 없었고, 병합으로 그런 해를 배제하면서 균형 있는 후보에 도달한 것입니다.

각 단계에서는 그 단계의 소스·싱크와 병합 조건 아래 최소절단을 구합니다. 이 사실만으로 임의의 병합 선택이 원래의 모든 균형 분할 중 전역 최적해를 보장한다고 확대하면 안 됩니다. 모델의 정확성, 해당 s–t 문제의 최적성, 원래 균형 문제에 대한 탐색은 서로 구별해야 합니다.

핵심 O/X 퀴즈

1. 첫 최대유량에서 n₁, n₄, n₇이 포화되므로 어느 하나를 잘라도 a와 i가 분리된다.
X첫 단계에서 유효한 단일 네트 절단은 n₁입니다.
2. a와 d를 병합한 뒤의 s는 면적 계산에서 원래 셀 두 개를 대표한다.
O병합 정점의 내부를 펼쳐 세어야 합니다.
3. 자료의 최종 세 분할은 모두 면적 조건 [4,5]를 만족하고 cutsize가 3이다.
O같은 비용으로 서로 다른 균형 분할을 얻습니다.
14

추가 연습문제 읽기: 무엇을 바꾸어야 실력이 늘어나는가EXERCISES

기본 예제를 따라 했다면, 이제 같은 계산을 반복하는 대신 조건 하나를 바꿔 보겠습니다. 중요한 것은 정답 숫자보다, 조건이 바뀌었을 때 어느 단계가 달라지는지 아는 것입니다.

조건을 바꾸는 네 가지 방향
KL
같은 여덟 셀 회로에서 초기 분할을 {a,c,e,g} / {b,d,f,h}로 바꿉니다. 초기 분할이 달라지면 E와 I부터 다시 계산해야 합니다. 열 셀 회로 문제는 a와 b를 고정하는데, 고정 셀은 교환 후보에서 제외하지만 그 셀에 연결된 간선은 비용 계산에 남습니다.
FM
{b,c,d,e} / {a,f,g,h}로 시작하고 [3,5]를 지킵니다. 클러스터 수준에서 FM을 수행한 뒤 최선의 해를 원래 네트리스트로 펼쳐 다시 FM을 수행하는 문제도 있습니다 — 큰 묶음에서 분할하고 세부 수준에서 다듬는 흐름입니다.
EIG
같은 [3,5] 제약 아래 ratio cut 최소화와 cutsize 최소화를 따로 요구합니다. 먼저 합법적인 후보를 걸러 낸 뒤 요구한 목적함수로 비교해야 합니다. 목적함수가 다르면 같은 후보들의 우선순위도 달라질 수 있습니다.
FBB
시작 소스·싱크를 바꿉니다. 아홉 셀 회로는 (c,f)와 [4,5], 여덟 셀 회로는 (a,h)와 [3,5]를 사용합니다. 시작점이 바뀌면 최초 최소절단과 이후 병합 경로가 어떻게 달라지는지 확인하는 연습입니다.

EIG-IG의 intersection graph도 등장합니다. 여기서는 셀이 아니라 원래 회로의 네트가 정점이 되고, 두 네트가 셀을 공유하면 서로 연결됩니다. ‘정점 하나가 무엇을 뜻하는가’부터 다시 읽어야 하는 모델입니다. 자료의 추가 문제는 다음 가중치 정의를 명시합니다.

A′ab = Σl=1..q 1dl − 1 ( 1|sa| + 1|sb| ) 기호의 상세 맥락과 셀을 다시 배정하는 module assignment heuristic은 인용 논문의 그림 7·8을 참조하도록 되어 있습니다.

발췌본에 없는 자료는 지어내지 않습니다. 클러스터 FM 문제에 필요한 표 1.9와 1.10, 그리고 위 가중치 정의가 참조하는 그림 7·8은 첨부 발췌본에 없습니다. 클러스터 구성과 면적을 임의로 만들어 수치 풀이를 진행해서는 안 됩니다. 완전한 수치 풀이가 제공된 문제와 추가 자료가 필요한 문제를 구분하세요.

핵심 O/X 퀴즈

1. 고정 셀은 이동 후보에서 빠지므로 그 셀과 연결된 간선도 cutsize 계산에서 없애야 한다.
X이동 금지와 연결 삭제는 다릅니다.
2. 면적 제약을 만족하는 후보를 골랐더라도, ratio cut과 cutsize는 별도로 비교해야 한다.
O제약과 목적함수는 서로 다른 역할입니다.
3. intersection graph에서는 원래 네트들이 정점의 역할을 한다.
O원래 셀 중심 그래프와 정점의 의미가 달라집니다.
15

FM 이후의 발전: 지금의 이득만 보면 충분한가LOOKAHEAD · KFM · CLIP · LIFO

여기서는 각 연구의 세부 구현을 새로 채우기보다, 기본 알고리즘의 어떤 약점을 겨냥했는지 읽어 보겠습니다. 자료도 이 목록이 포괄적인 전체 조사는 아니라고 밝힙니다.

무엇을 고치려 했는가
LOOKAHEAD 동률을 어떻게 깰 것인가

현재 이득만 보지 않고 그 이동이 이후 이웃의 gain에 미치는 영향까지 점수 벡터에 담습니다. 첫 성분은 즉각적인 cutsize 감소량, 둘째 성분은 이웃 gain 변화 정보이며 벡터를 사전식으로 비교합니다.

K-WAY FM 목적지가 여럿일 때

둘로 나눌 때는 목적지가 하나뿐이지만 K개 파티션에서는 K−1개 목적지가 있습니다. 셀마다 목적지별 gain을 관리합니다. 자료는 KFM, 재귀적 FM인 RFM, 그리고 KFM을 개선하는 KPM의 후속 비교도 언급합니다.

CLIP 묶음을 함께 옮기기

첫 셀을 초기 gain으로 고른 뒤 다른 셀들의 점수를 0으로 초기화합니다. 처음부터 높았던 점수만 따라가기보다 방금 움직인 셀의 이웃이 더 주목받아, 가까운 셀들의 연속 이동을 유도합니다.

LIFO 버킷 내부의 순서

최근에 갱신된 셀을 버킷 앞쪽에 둡니다. 최근 이동의 영향을 받은 이웃이 가까운 시점에 다시 선택될 가능성을 높입니다. 자료는 해당 연구에서 LIFO가 FIFO나 무작위 관리보다 좋은 결과를 보였다고 설명합니다.

따라서 동률 규칙은 단순히 정답을 하나로 정하기 위한 장식이 아닙니다. 탐색이 다음에 어디로 향할지를 바꾸는 선택입니다. 자료는 클러스터링과 해제, 초기 분할, LIFO, lookahead 등을 어떻게 조합할지 연구한 접근도 소개합니다. 알고리즘의 품질은 gain 공식 하나뿐 아니라 이 선택들의 조합에서 나옵니다.

다만 KFM·RFM·KPM 비교는 소개된 연구의 결과이지, 모든 입력에서의 무조건적인 성능 보장으로 읽으면 안 됩니다.

핵심 O/X 퀴즈

1. lookahead는 현재 gain이 같을 때 이후 이웃에 미치는 영향으로 선택을 구분할 수 있다.
O현재 이득을 넘어선 정보를 사용합니다.
2. K-way FM에서는 셀마다 이동 목적지에 따른 K−1개의 gain을 고려할 수 있다.
O목적지가 여러 개이기 때문입니다.
3. 같은 gain 버킷 안의 선택 순서는 이후 탐색 결과에 영향을 주지 않는다.
XLIFO와 CLIP의 설명이 바로 그 반대의 가능성을 보여 줍니다.
16

EIG 이후의 발전: 좌표를 늘리고, 순서를 더 잘 자르기MULTI-DIMENSIONAL ORDERING

EIG에서는 고유벡터 하나를 좌표로 읽었습니다. 그렇다면 여러 고유벡터를 쓰면 어떨까요? 자료는 작은 고유값들에 대응하는 여러 고유벡터를 사용하여 정점들을 다차원 공간에 놓고 이를 다중 분할로 확장한 연구를 소개합니다. 고유값 계산 전에 클러스터링으로 문제 크기를 줄이는 방법도 함께 제안됩니다.

한편 분할에 유용한 일차원 순서를 꼭 같은 고유벡터 절차로만 얻을 필요는 없습니다. 자료의 Gordian-L 관련 접근은 해석적 배치 결과에서 셀 순서를 얻고 그 순서를 잘라 ratio cut을 평가합니다. 여기서 공통 구조는 ‘배치로 순서를 얻고, 순서로 분할 후보를 만든다’입니다. MELO 관련 설명은 여러 고유벡터를 이용하여 각 정점을 다차원 벡터로 바꾸고, 그래프 분할을 벡터 분할의 관점에서 다룹니다. 자료는 모든 고유벡터를 사용할 때 두 문제의 정확한 대응을 설명하며, 이를 바탕으로 정점 순서를 만들어 이분할과 다중 분할을 얻는 접근을 소개합니다.

또 다른 접근은 좌표 정보와 원래 네트리스트의 연결 정보를 결합합니다. 다차원 배치에서 일차원 순서를 만든 뒤 동적 계획법으로 그 순서를 K개 구간으로 나눕니다. 여기서 중요한 단어는 ‘그 순서’입니다. 주어진 순서의 최적 K-way 분할을 구한다는 것과, 원래 그래프의 모든 가능한 K-way 분할을 전부 해결한다는 것은 다른 주장입니다.

마지막으로 좌표를 만들 때 어떤 길이 비용을 쓸지도 바꿀 수 있습니다. 자료는 선형 목적이 배선 길이에 유리한 측면과, 이차 목적이 정점들을 더 성기게 배치하여 겹침을 줄이는 측면을 대비시킵니다. α-order 목적은 1 ≤ α ≤ 2 사이를 조절하여 두 성격을 함께 활용하려는 시도입니다.

여기까지를 하나로 묶으면 이렇습니다. 더 많은 좌표를 사용할 것인가, 좌표를 만드는 비용을 바꿀 것인가, 연결 정보를 다시 섞을 것인가, 얻은 순서를 더 잘 자를 것인가. 모두 EIG의 ‘연결 구조를 좌표와 순서로 바꾸어 탐색한다’는 생각을 다른 지점에서 확장합니다.

핵심 O/X 퀴즈

1. 여러 고유벡터를 사용하면 정점에 다차원 좌표를 부여할 수 있다.
O고유벡터 성분들을 좌표로 사용합니다.
2. 정해진 정점 순서를 최적으로 K개 구간으로 나누면 원래 그래프의 모든 K-way 분할 중 최적해도 자동으로 보장된다.
X최적화하는 후보 공간이 정해진 순서에 의해 제한됩니다.
3. 자료의 α-order 목적은 선형과 이차 목적 사이의 성격을 조절하려는 접근이다.
Oα의 범위는 1부터 2입니다.
17

FBB 이후의 발전과 최종 복습: 경계를 바꾸는 데서 회로를 바꾸는 데로LOGIC REPLICATION

지금까지는 셀을 어디에 둘지만 바꾸었습니다. 그런데 경계를 넘는 연결을 줄이기 위해 일부 논리를 양쪽에 복제할 수도 있다면 어떨까요? 분할만 정하는 문제에서, 어떤 논리를 복제할지도 함께 결정하는 문제로 넓어집니다.

자료는 주어진 분할에서 최소절단 논리 복제를 찾는 유량 기반 접근을 소개합니다. 하이퍼그래프로 확장하고 면적 균형을 위한 휴리스틱을 더하여, 여러 FPGA에 회로를 나눌 때 필요한 핀과 FPGA 수를 줄이는 방향으로 응용합니다. 여기서 복제는 공짜가 아닙니다. 연결 비용 감소와 면적 증가를 함께 보아야 합니다.

이어지는 연구는 초기 분할을 반드시 주어야 하는 상황에서 더 나아가 분할과 복제를 동시에 계산합니다. 자료에서 최적 알고리즘으로 설명하는 출발 조건은 두 단자 네트와 면적 제약이 없는 경우이고, 여러 단자 네트와 면적 균형에는 휴리스틱 확장을 덧붙입니다. ‘최적’이라는 말 옆에 어떤 조건이 붙는지 읽어야 한다는 교훈이 여기서도 반복됩니다.

또 FBB의 다중 분할 확장은 면적뿐 아니라 핀 제약도 함께 다룹니다. 반복적인 최대유량 계산으로 두 제약을 만족하는 셀 집합을 찾고, 한 FPGA에 넣을 수 있는 면적을 크게 하여 사용 FPGA 수를 줄이려 합니다. 복제 문제에서도 목적함수를 구별해야 합니다. 절단 비용을 최소화했다고 해서 복제한 셀 수까지 최소인 것은 아닙니다. 자료는 복제 면적까지 고려하는 min-area min-cut replication과 더 간결한 하이퍼그래프 유량 모델을 소개하고, 마지막에는 시간을 나누어 논리를 사용하는 동적 재구성 FPGA에서 여러 단계 사이의 통신을 줄이는 temporal logic replication으로 이어집니다.

[처음 칠판에 적었던 ‘연결 비용’과 ‘크기 균형’을 다시 가리킨다.]

이제 첫 질문으로 돌아갑시다. “회로를 반으로 나누는 데 왜 이렇게 다양한 알고리즘이 필요할까요?” 무엇을 정확히 보존하는 모델을 쓰는지, 어떤 후보를 탐색하는지, 어떤 제약을 언제 적용하는지가 다르기 때문입니다.

네 알고리즘, 한 줄씩 남기기
KL
가중 그래프 위의 셀 쌍 교환, 그리고 최선의 pass 앞부분.
FM
하이퍼그래프의 FS−TE, 합법적인 단일 셀 이동, 버킷과 이웃 갱신.
EIG
라플라시안 고유벡터가 주는 순서, 그 순서의 모든 절단 후보, ratio cut과 강제 균형의 차이.
FBB
용량 1의 네트 다리, s–t 최소절단, 면적을 보존하는 병합과 유량 재활용.

어떤 결과를 보든 세 문장을 스스로 완성해 보세요. “이 값은 무엇을 세고 있다.” “이 후보는 어떤 제약 아래 합법적이다.” “이 최적성은 어떤 후보 범위에서 성립한다.” 이 세 문장을 말할 수 있다면, 여러분은 단순히 표를 따라 계산한 것이 아니라 이 장의 알고리즘을 이해한 것입니다.

핵심 O/X 퀴즈

1. 논리 복제에서는 절단 비용 감소와 복제에 따른 면적 부담을 함께 고려해야 한다.
O자료가 설명하는 중요한 비용 교환 관계입니다.
2. 절단 비용이 최소인 복제 해는 복제한 셀 수까지 반드시 최소이다.
X그래서 복제 면적을 별도로 최소화하는 문제가 등장합니다.
3. 최대 gain이나 최소절단이라는 표현은 해당 모델, 제약, 후보 범위와 함께 해석해야 한다.
O이것이 네 알고리즘을 관통하는 마지막 핵심입니다.

“이 값은 무엇을 세고 있다.”
“이 후보는 어떤 제약 아래 합법적이다.”
“이 최적성은 어떤 후보 범위에서 성립한다.”

VLSI 회로 분할 — KL · FM · EIG · FBB  /  강의 대본 기반 정리 노트