Tìm Chi Phí Đi Lại Giữa Các Tuyến Đường (Nâng cao)

Nếu bạn làm trong ngành vận tải, hoặc đơn giản là bạn cần di chuyển qua nhiều địa điểm. Bạn sẽ luôn muốn tìm ra cách di chuyển sao cho chi phí tối ưu nhất có thể. Bài toán này mình sẽ hướng dẫn bạn

Bài toán: Bảng dữ liệu gồm chi phí đi lại cho các quãng đường. Cần di chuyển bắt đầu từ A, đi qua các địa điểm và kết thúc tại A. Liệt kê các quãng đường sẽ đi cũng như chi phí của nó để tìm ra được cách đi tối ưu nhất. (Nếu bạn chưa rõ cách tính hãy tham khảo màu 2 vị trí mình có tô tương ứng theo kết quả).

Link: Onedrive

Tối ưu chi phí đi lại giữa các điểm

Công thức:
1.=LET(a,A2:A6,b,SEQUENCE(,ROWS(a)-1),p,MID(REDUCE("",b,LAMBDA(x,v,TOCOL(IFS(ISERR(FIND(b,x)),x&b),3))),b,1)+1,HSTACK(BYROW(p,LAMBDA(s,CONCAT(@a,INDEX(a,s),@a))),BYROW(p,LAMBDA(r,SUM(INDEX(B2:F6,HSTACK(1,r),HSTACK(r,1)))))))

2.=LET(a,"A"&SORT(REDUCE("",ROW(1:4),LAMBDA(x,v,TOCOL(REPLACE(x,SEQUENCE(,v),,MID("BCDE",v,1))))))&"A",HSTACK(a,BYROW(XLOOKUP(MID(a,{1,2,3,4,5},2),TOCOL(A2:A6&B1:F1),TOCOL(B2:F6)),SUM)))

3.=LET(a,A2:A6,b,ROWS(a),c,PERMUT(b,b),d,MAP(SEQUENCE(c,,0),LAMBDA(x,LET(m,LAMBDA(i,s,v,z,LET(p,IF(z=0,0,MOD(ROUNDDOWN(x/(v/z),0),z)+1),IF(p=0,"",INDEX(s,p)&i(i,FILTER(s,s<>INDEX(s,p)),v/z,z-1)))),m(m,a,c,b))))),v,TAKE(a,1),w,FILTER(d,LEFT(d)=v)&v,k,TEXTSPLIT(ARRAYTOTEXT(TOCOL(a&"-"&B1:F1&"-"&B2:F6)),"-",", "),HSTACK(w,MAP(w,LAMBDA(x,SUM(XLOOKUP(MID(x,{1;2;3;4;5},2),BYROW(TAKE(k,,2),CONCAT),--TAKE(k,,-1)))))))
Đăng nhận xét (0)
Mới hơn Cũ hơn