Tôi muốn tạo một số dữ liệu đại diện cho tọa độ của một đám mây các điểm biểu diễn một khối n của các chiều không gian. Những điểm này nên được phân bố đều trên toàn bộ không gian n và sẽ có thể được tạo ra với khoảng cách do người dùng xác định giữa chúng. Dữ liệu này sẽ được lưu trữ trong một mảng.C++ Cách tạo tập hợp các sản phẩm Descartes của các bộ dữ liệu n chiều
Trả lời
Tôi đã tìm thấy việc triển khai cartesian product using Boost.MPL.
Có một sản phẩm Cartesian thực tế trong Boost cũng nhưng đó là một chỉ thị tiền xử lý, tôi cho rằng nó không sử dụng cho bạn.
Chúc mừng đó là một ví dụ hữu ích cho tôi để đọc mặc dù, mặc dù nó không hoàn toàn trả lời câu hỏi của tôi hoàn toàn. – Ben
Để giữ mọi thứ đơn giản, đây là ví dụ cho hình lập phương thông thường, nghĩa là một hình có 3 kích thước. Hãy để nó có chiều dài bên 1 và giả sử bạn muốn các điểm cách nhau trong khoảng thời gian 1/n. (Điều này dẫn đến việc phân phối các điểm hình chữ nhật thống nhất, không hoàn toàn chắc chắn rằng đây là những gì bạn muốn).
Bây giờ một số mã giả:
for i=0;i<=n;i++ //NB i<=n because there will be n+1 points along each axis-parallel line
for j=0;j<=n;j++
for k=0;k<=n;k++
addPointAt(i/n,j/n,k/n) //float arithmetic required here
Lưu ý rằng đây không phải là sản phẩm Descartes của bất cứ điều gì nhưng dường như đáp ứng (trường hợp đặc biệt của) tiêu chí của bạn. Nếu bạn muốn các điểm cách nhau khác nhau, hãy điều chỉnh chỉ số bắt đầu và kết thúc vòng lặp hoặc kích thước khoảng thời gian.
Để khái quát hóa điều này với bất kỳ thứ nguyên nào được chỉ định cao hơn dễ dàng, hãy thêm các vòng lặp khác.
Để khái quát hóa bất kỳ thứ nguyên nào cao hơn mà không được biết cho đến khi thời gian chạy chỉ khó khăn hơn một chút. Thay vì khai báo một mảng N-chiều, khai báo một mảng 1-D với cùng một số phần tử. Sau đó, bạn phải viết số học chỉ mục một cách rõ ràng thay vì có trình biên dịch viết nó cho bạn.
Tôi mong rằng bạn sẽ cho tôi biết rằng đây không phải là điều bạn muốn! Nếu nó không phải là bạn có thể làm rõ.
Đây là những gì tôi muốn nhưng những gì tôi đang theo đuổi là một giải pháp chung cho điều này, chứ không phải là một giải pháp cụ thể. Đây cũng là những gì tôi đang theo đuổi. Một người bạn lặp lại câu hỏi cho tôi. Đó là một trong những khó khăn cho tôi để giải thích như tôi không có bất kỳ nền tảng trong hình học vượt quá 3 chiều. – Ben
@Ben: OK, vì vậy giải pháp chung là bạn tạo một mảng 1-D là biểu diễn 'phẳng' của mảng N-D của bạn. –
Tôi đã tự hỏi làm thế nào để thực hiện đệ quy n chiều sâu mặc dù để tôi có một cách chung chung để tạo ra các tọa độ cho tất cả các kích thước n. Có một chức năng tự gọi là một cách tôi nghĩ đến nhưng điều này có vẻ không cần thiết và lộn xộn. – Ben
Bạn có thể làm điều này một cách đệ quy (giả):
Function Hypercube(int dimensions, int current, string partialCoords)
{
for i=0, i<=steps, i++
{
if(current==dimensions)
print partialCoords + ", " + i + ")/n";
else if current==0
Hypercube(dimensions, current+1, "("+i);
else
Hypercube(dimensions, current+1, partialCoords+", "+i);
}
}
Bạn gọi nó là: Hypercube (n, 0, ""); Điều này sẽ in tọa độ của tất cả các điểm, nhưng bạn cũng có thể lưu trữ chúng trong một cấu trúc.
- 1. Sản phẩm Descartes của hai tập tin (dưới dạng tập hợp các dòng) trong GNU/Linux
- 2. Sản phẩm Descartes của các bộ tùy ý trong Java
- 3. Sản phẩm Descartes của các đối tượng trong javascript
- 4. sản phẩm Descartes trong MATLAB
- 5. Sản phẩm Descartes trong Đề án
- 6. đảm bảo các sản phẩm Descartes của các khóa xuất hiện trong một bảng Pandas
- 7. Sản phẩm Descartes của 2 danh sách trong Haskell
- 8. Haskell: Cách tạo ra một sản phẩm Descartes của hai loại dữ liệu đại số đơn giản
- 9. (Set of) Danh sách bộ (s) Descartes sản phẩm() từ đồ thị tương ứng với tập hợp danh sách
- 10. Bộ sưu tập sản phẩm Magento Chỉ nhận sản phẩm từ các danh mục nhất định
- 11. Numpy: sản phẩm ngoài của n vectơ
- 12. Scala: cross (Descartes) sản phẩm với nhiều nguồn và các loại không đồng nhất
- 13. Bộ sưu tập sản phẩm tải Magento bao gồm các sản phẩm bị vô hiệu hóa
- 14. Bộ nguồn và Cartesian Sản phẩm của bộ python
- 15. Sản phẩm tối đa của các yếu tố coprime
- 16. Kết hợp mờ của tên sản phẩm
- 17. Cách tạo danh sách các bộ dữ liệu C++
- 18. Làm thế nào để tạo ra sản phẩm Descartes qua các nhóm số ngẫu nhiên trong Java?
- 19. Mở rộng Tập hợp [Đặt [Chuỗi]] thành Sản phẩm Cartesian trong Scala
- 20. Truy vấn SQL để tìm các sản phẩm khớp với tập hợp các loại
- 21. Kết hợp không gian của các tập dữ liệu lớn
- 22. lặp trên sản phẩm Cartesian của vectơ
- 23. Bộ sưu tập sản phẩm lọc Magento theo nhiều loại
- 24. Cách nhập cơ sở dữ liệu, cập nhật các sản phẩm đã thay đổi, xóa các sản phẩm đã bị xóa
- 25. Magento: Sắp xếp bộ sưu tập sản phẩm
- 26. Python - cách nhanh chóng để tổng hợp các sản phẩm bên ngoài?
- 27. Bộ phận lồng ghép của tôi cho các tập lồng nhau cho các tập dữ liệu phân cấp theo chiều sâu tùy ý: Tốt hay Xấu?
- 28. .htaccess với các sản phẩm (chuỗi)
- 29. Đặt sản phẩm bằng Python
- 30. Quản lý bộ sưu tập các bộ dữ liệu trong Objective-C
là bài tập về nhà này? – Cetra
không có lợi ích cá nhân này. – Ben