2012-03-26 32 views
7

Tôi hiện đang cố triển khai thuật toán sơ đồ trang web trong Javascript. Cụ thể hơn là thuật toán được mô tả trong Squarified Treemaps. Mã giả cho trông giống như sau:Thực hiện một sơ đồ trang trí hình vuông trong javascript

procedure squarify(list of real children, list of real row, real w) 
begin 
    real c = head(children); 
    if worst(row, w) <= worst(row++[c], w) then 
     squarify(tail(children),row++[c], w) 
    else 
     layoutrow(row); 
     squarify(children,[], width()); 
    fi 
end 

tuy nhiên JavaScript của tôi trông giống như:

var c = children[0]; 
if (worst(row, w) >= worst(row.concat(c), w)) { 
    this.squarify(children.splice(1), row.concat(c), w); 
} else { 
    layoutrow(row); 
    this.squarify(children, [], width()); 
} 

Theo như tôi có thể nói mã của tôi làm việc một cách chính xác, nhưng sự bất bình đẳng là một cách sai lầm xung quanh. Tôi giả sử tôi nhìn thấy một cái gì đó trong việc thực hiện của tôi, hoặc là bất đẳng thức sai cách xung quanh trong mã giả? Cảm ơn

+0

Có thể lỗ hổng trong việc bạn triển khai 'tồi tệ nhất()'. – gilly3

+3

Cảm ơn phản hồi. Tôi đã nhìn khá chặt chẽ tại triển khai của tôi tồi tệ nhất, và theo như tôi có thể nói nó trả lại tỷ lệ tồi tệ nhất một cách chính xác. Điều thú vị là một [bài đăng blog] (http://jectbd.com/?p=271) dường như có sự bất bình đẳng theo cách khác, vì vậy tôi bắt đầu nghi ngờ mã giả là không chính xác. – user414310

+0

Xin lỗi, đã đọc bài đăng trên blog, không chỉ là mã. Nó thực sự trông giống như sự bất bình đẳng là sai đường xung quanh. – user414310

Trả lời

4

Bạn muốn thêm c với dòng row khi làm như vậy sẽ cải thiện tức là tỉ lệ khi

worst(row++[c], w) < worst(row, w) 

Tôi vừa mới cam kết một đoạn mã trên github mà thực hiện các thuật toán trong nguyên cảo và bao gồm sẵn sàng để sử dụng JavaScript:

https://github.com/nicnguyen/treemap

0

Nếu bạn chỉ quan tâm đến thuật toán bố trí, kiểm tra gói squarify NPM tôi. Nó chỉ trả về dữ liệu bố cục, cho phép bạn tự do hiển thị kết quả theo ý muốn.

Các vấn đề liên quan