đề lại là bao nhiêu bộ xử lý trên các cột mà s sở hữu: và nó càng ít thì càng tốt. Vì vậy, khi chúng ta khởi tạo với tất cả các cột được sở hữu bởi các bộ xử lý khác (chẳng hạn,
Nr(s)=|B(s)|, C(s) và C(s)B(s)), tốt nhất cho s trước tiên sở hữu tất cả các cột
trong C(s)với hai bộ xử lý, rồi tất cả các cột trong C(s)với ba bộ xử lý,…, cho tới khi
Ns(s)=Nr(s). Trong hầu hết các trường hợp thường không đạt được dấu bằng mà chỉ tăng
Input : B(s)
Output: C(s) và biên dưới địa phương local(s)
C(s) := ;
while not marked
chọn jC(s) với k(j) nhỏ nhất j s C s C( ): ( ) ; if Ns(s)Nr(s)then C(s) := C(s); else local(s) := max(Ns(s), Nr(s)); marked
Ns(s) nhiều nhất có thể nhưng vẫn thoả mãn Ns(s) Nr(s). Giá trị đạt được theo cách này sẽ cho ta giá trị max(Ns(s),Nr(s)) và được gọi là local(s). Ta có thuật tốn 2.6.
Ta thấy rằng tập các cột C(s) đạt được luôn thoả mãn hai tính chất cơ bản sau: (i) k(c1)k c2 , với mọi c1C(s)và c2C s,
(ii) Nr(s)kC,min 1Ns(s)Nr(s),
với kC,min mincC(s)k(c). Nếu chúng ta định nghĩa local max0splocal(s)thì chúng ta đạt được cận dưới tiếp theo dưới đây.
Định lý 2.6 (Cận dưới 3): Với mỗi phân phối véc tơ thì cận dưới cho giá trị
max(Nsend, Nreceive)như sau:
. )
,
max(Nsend Nreceive local (2.17)
Chứng minh:
Để chứng minh điều này chúng ta sẽ chỉ ra rằng max(Ns(s),Nr(s))local(s) với mọi
s. Trước tiên chúng ta có các định nghĩa:
) ( ),
(s C C s B
B , với C được xây dựng như trong thuật toán 2.6. Ns(s) Ns(C) Nr(s) Nr(C) Ns(C),Nr(C) max N(C)
Sắp xếp các cột của B không giảm theo số bộ xử lý trên cột k(j). Đánh số lại cho các cột của B sao cho k(0)k(1)...kB 1.và C 0,1,2,...C 1.. Cho C0,...,B 1 là tập các cột tuỳ ý. Chúng ta sẽ biến đổi C thành C sao cho không tăng N(C). Và chúng
Chúng ta sẽ chuyển tập các cột tuỳ ý C thành tập được sắp C0,...,C1 với cùng kích thước.
Thuật tốn 2.7 Chuyển tập C thành C0,...,C1
(Chứng minh tại mỗi thời điểm C C j C1. Với i thoả mãn i C1. Vì vậy ) ( ) (i k j k j
i , là vì các cột được sắp theo số các bộ xử lý). Vậy Ns(C) Ns(C)và ).
( )
(C Nr C
Nr Như là một kết quả N C N C.
Bây giờ chúng ta sắp xếp tập C, chúng ta có thể phải bỏ hoặc thêm vào các cột từ/tới Ccho tới khi C C. Cho m C m C,và chúng ta có các trường hợp sau:
1. mm:C0,...,m1 và C0,...,m1. Vì vậy CC.
2. mm:C0,...,m1 và C0,...,m1,...,m1.Cho CC. Chúng ta sẽ bỏ đi các cột từ m1 tới m khỏi C Như một kết quả C0,...,m1C. Cho Coldvà
new
C là các tập trước và sau khi bỏ một cột. Nếu mmthì Ns Cold Nr Cold . Hơn nữa, NrCnewNr Cold 1 Ns(Cold )và NsCnew Ns Cold . Vì vậy
C new Ns Cold N(Cold).
N
3. mm:C0,...,m1,...,m1 và C0,...,m1. Cho CC. Chúng ta sẽ chuyển C thành C bằng việc thêm vào các cột mtới m-1 vào C . Như là một kết quả C0,...,m1C. Theo cách xây dựng Ns(C) Nr(C). Bởi vì mm,
C C: ; for i:= 0 to C 1 if iCthen chọn jCmà j lớn nhất C j i C: \ ;
1 ) ( ) ( )
(Cnew Nr Cnew Nr Cold
Ns và Ns(Cold )Nr(Cold ). Vì vậy
Cnew Nr Cold N Cold .
N
Bây giờ chúng ta chỉ ra rằng mỗi tập Ccó thể chuyển thành tập C mà không làm
tăng N C. Vì vậy C là tối ưu, vì nếu khơng sẽ phải có một tập C~ màN C~ N C , cái này cũng có thể được chuyển thành C mà không làm tăng N C~ . Điều này là mâu thuẫn.
Như vậy chúng ta đã chứng minh được rằng cận dưới địa phương là cực tiểu, nếu một tập các cột thoả mãn điều kiện xác định thì chi phí của nó là cực tiểu. Điều kiện này sẽ được duy trì trong suốt thuật tốn dựa trên cận dưới địa phương, thảo luận ở phần tiếp theo.
Bổ đề 2.1: Nếu Clà tập thoả mãn (i) và (ii), thì N C N ,C với C là tập các cột được
tạo bởi thuật toán 2.6, N(C) = max(Ns(C), Nr(C)).
Chứng minh:
Chuyển tập Cthành tập C với C0,1,...,C1sử dụng thuật toán 2.7.
Ở đây k i k j với mọi hốn vị cột trong thuật tốn 2.7. (Vì, nếu k i k j , thì sẽ có cột iCvới k(i) thấp hơn một cột trong C, bởi vậy không thoả mãn (i), dẫn tới mâu thuẫn. Trong chứng minh phần trước đã chỉ ra rằng k i k j thì khơng thể. Vậy
k i k j . Bởi vì k i k j với mỗi hoán vị, Ns(C)=Ns(C), Nr(C)=Nr(C), suy ra N(C)=N(C) và C thoả mãn (i) và (ii).
Bây giờ chúng ta có tập được sắp C, thoả mãn (i) và (ii), có ba khả năng: 1. mm: C C N C N C N C .
2. mm: C = {0,…,m - 1} và C0,...,m1,...,m1 . Với C thoả mãn ,min
( ) C 1 ( ) ( ),
mãn Ns C Ns C( )kC,min 1 và Nr C Nr C( ) 1. Do đó ,min
( ) ( ) C 1 ( ) ( )
Ns C Ns C k Nr C Nr C C không thoả mãn (ii), dẫn tới mâu thuẫn. 3. mm: C0,...,m1,...,m1và C0,...,m1 . Với C thoả mãn ( ) ( ) ( 1) 1 Ns C Ns C k m vàNr C( ) Nr C( ) 1. ( ) ( 1) 1 ( ) ( ) ( ) Ns C k m Ns C Nr C Nr C Ns C( )Nr C( )k m( 1) 1. Lưu ý rằng kC,min k m( 1), bởi vì cột m 1 C. Do đó, ,min ( ) ( ) C 1
Ns C Nr C k Ckhông thoả mãn (ii), dẫn tới mâu thuẫn. Điều này có nghĩa rằng N C N C N C( ).
Với các ma trận phân phối tốt có thể đạt local V /Pa, bởi vì các giá trị địa phương của các bộ xử lý xem xét các cột chi phí rẻ (chẳng hạn các cột có ít bộ xử lý) để sở hữu chúng và tránh các cột chi phí đắt hơn. Vì vậy cận dưới tốt nhất là:
Định lý 2.7 (Cận dưới 4): Với mỗi phân phối véc tơ thì cận dưới cho giá trị max(Nsend, Nreceive)như sau:
/ , ).
max( )
,
max(Nsend Nreceive V Pa local (2.18) Trong đó V là dung lượng truyền thơng, Pa là số bộ xử lý kích hoạt khi phân phối dữ liệu của ma trận.
Đây là cận tốt để xác định cận dưới địa phương tổng quát, thuật toán 2.8. Sự khác nhau giữa cận dưới 3 và cận dưới 4 là cận dưới địa phương tổng quát cho phép các cột đã sở hữu, tức là |C(s)| > 0. Như một kết quả, trước khi phân phối các cột chưa được sở hữu
Ns(s) > 0 và Nr(s) < |B(s)|. Bây giờ cận dưới tổng quát localgen(s) cho bộ xử lý s đạt được
bằng việc phân trước tiên các cột chưa sở hữu c từ C(s) vào C(s) với k(c)=2, rồi k(c)=3,… Nhưng thoả mãn Ns(s) Nr(s). Thuật toán cho cận dưới tổng quát như sau: