Tôi đang cố gắng viết một thuật toán cho phép tôi lặp qua tất cả các điểm mong muốn trong một không gian n chiều để tìm mức tối thiểu của hàm f (x) trong đó x là vectơ kích thước n.Traversal của một không gian n chiều
Rõ ràng, việc tìm kiếm một 2-d hoặc 3-d không gian là khá đơn giản, bạn chỉ có thể làm:
for(int i = 0; i < x; i++) {
for(int j = 0; j < y; j++) {
//and so on for however many dimensions you want
Thật không may, đối với vấn đề của tôi, số chiều của không gian không cố định (tôi viết một công cụ tìm kiếm tối thiểu tổng quát cho nhiều chức năng trong một chương trình thống kê) và vì vậy tôi phải viết các vòng lặp cho mỗi giá trị của n tôi muốn sử dụng - mà cuối cùng có thể khá lớn.
Tôi đã cố gắng để có được đầu của tôi xung quanh làm thế nào tôi có thể làm điều này bằng cách sử dụng đệ quy nhưng không thể nhìn thấy các giải pháp - mặc dù tôi chắc chắn có một ở đó.
Giải pháp không cần phải đệ quy, nhưng nó phải là chung và hiệu quả (đường bên trong nhất trong vòng lặp lồng nhau đó sẽ được gọi là rất nhiều ...).
Con đường tôi đang đại diện cho khối lượng tìm kiếm là một mảng 2ngày của kép:
double[][] space = new double[2][4];
này sẽ đại diện cho một không gian 4d với mức tối thiểu và tối đa bị ràng buộc trong mỗi chiều ở vị trí 0 hoặc 1 trong những mảng, tương ứng. Ví dụ:
dim 0 1 2 3
min(0):-10 5 10 -0.5
max(1): 10 55 99 0.2
Bất kỳ ý tưởng nào?
Tôi không thực sự mới, tôi chỉ bị mất tài khoản của tôi từ lứa tuổi trước: P – Chilly
Làm thế nào để bạn xử lý phạm vi với số thập phân, tức là, '-0,5' đến' 0,2'? Ngoài ra, bạn cần những dữ liệu gì trong vòng lặp bên trong để xử lý nó? Một loạt các điểm? – mellamokb
Tuy nhiên, tôi không nghĩ rằng bộ não của tôi hoạt động rất tốt với đệ quy (thiếu thực hành, có lẽ) vì vậy chưa thử bất cứ điều gì - chỉ nhìn chằm chằm vào tường nhà để xe của tôi cố gắng hình dung nó. – Chilly