- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi sẽ cố gắng giải thích vấn đề này bằng ngôn ngữ toán học.
Giả sử tôi có một bộ vật phẩm X = {x_1, x_2, ..., x_n}
. X
Mỗi mục thuộc về bộ S_1, S_2, ..., S_5
một trong những. tôi nghĩ X
Tất cả các tập hợp con của chứa 5 mục:{x_i1, x_i2, ..., xi5}
所以 x_i1
thuộc về S_1
, ..., x_i5
thuộc về S_5
.
Một số tập hợp con được coi là đúng và một số tập hợp con được coi là không chính xác. Một tập hợp con được coi là đúng nếu nó không chứa các mục xung đột. Tôi có hàm f1 xác định xem một cặp mục có xung đột hay không.
Tôi cũng có hàm f2 để so sánh các tập hợp con chính xác này và cho biết tập hợp con nào tốt hơn (chúng cũng có thể bằng nhau).
Tôi cần tìm tập hợp con tốt nhất không xung đột.
Thuật toán tôi sử dụng:
Tôi đã xây dựng tất cả các tập hợp con và loại bỏ những tập hợp con không chính xác. Sau đó, tôi sử dụng f2 làm hàm sắp xếp để sắp xếp các tập hợp con chính xác và lấy tập hợp con tốt nhất đầu tiên (tôi sử dụng thuật toán quicksort). Trong phạm vi có một số lượng lớn các tập hợp con, quá trình này không đủ thời gian.
Có cách nào tốt hơn về mặt tiêu thụ thời gian?
đã cập nhật
Chúng ta hãy coi x_i là một khoảng có điểm cuối là số nguyên. Nếu hai khoảng không giao nhau, f1 trả về true, nếu không thì trả về false. f2 so sánh tổng chiều dài các khoảng trong các tập hợp con.
câu trả lời hay nhất
Câu hỏi này là một biến thể của thuật toán lập kế hoạch khoảng thời gian có trọng số tối đa. Độ phức tạp đa thức của thuật toán DP làO(N*log(N))
. Và TRÊN)
không gian cho những câu hỏi ngây thơ, vàO(2^G * N * logn(N))
O(2^G * N)
Sự phức tạp của không gian vấn đề đang thay đổi này, trong đó G
, N
biểu thị tổng số nhóm/tập hợp con (ở đây là 5) và các khoảng tương ứng.
Nếu x_i không đại diện cho một khoảng thì vấn đề nằm ở NP, như các giải pháp khác đã chứng minh.
Đầu tiên chúng ta sẽ giải thích giải pháp quy hoạch động để lập kế hoạch khoảng thời gian có trọng số tối đa, sau đó giải quyết vấn đề biến phân.
bắt đầu(i)
, kết thúc(i)
, trọng lượng(tôi)
Điểm bắt đầu, điểm kết thúc và độ dài của khoảngTôi
tương ứng.1, 2,...N
.tiếp theo(i)
có nghĩa là không với khoảng thời gian Tôi
Khoảng tiếp theo trùng lặp.S(tôi)
là khoảng thời gian có trọng số tối đa chỉ xem xét các công việc tôi, tôi+1, ... N
.S(1)
là giải pháp có tính đến 1,2,...N
tất cả công việc trong và trả về khoảng thời gian có trọng số tối đa.S(tôi)
đệ quy..
S(i) = trọng lượng(i) if(i==N) // công việc cuối cùng
= max(trọng lượng(i)+S(tiếp theo(i)), S(i+1)
Độ phức tạp của giải pháp này là O(N*log(N) + N)
. N*log(N)
đang tìm kiếm tiếp theo(i)
cho mọi công việc và N
được sử dụng để giải các bài toán con. không gian làTRÊN)
Được sử dụng để lưu lời giải cho các bài toán con.
Bây giờ, hãy giải quyết các biến thể của vấn đề này.
bắt đầu(i)
, kết thúc(i)
, trọng lượng(tôi)
, tập hợp con(i)
là điểm bắt đầu, điểm kết thúc, độ dài khoảng và tập hợp con của khoảngTôi
tương ứng.1, 2,...N
.tiếp theo(i)
có nghĩa là không với khoảng thời gian Tôi
Khoảng tiếp theo trùng lặp.S(i,đang chờ xử lý)
là khoảng thời gian có trọng số tối đa chỉ xem xét các công việc tôi, tôi+1, ... N
Và chưa giải quyết
là danh sách các tập hợp con mà chúng ta phải chọn một khoảng.S(1, {S_1,...S_5})
là một giải pháp xem xét mọi công việc1,...N
, vì S_1,...S_5
Mỗi lựa chọn một khoảng thời gian và trả về khoảng thời gian có trọng số tối đa.S(tôi)
Sự đệ quy như sau..
S(i, đang chờ xử lý) = 0 if(pending==empty_set) // có thể kết hợp
= -inf if(i==N && đang chờ xử lý!={group(i)}) // kết hợp sai
= S(i+1, đang chờ xử lý) if(nhóm(i) không phải là thành phần đang chờ xử lý)
= max(weight(i)+S(next(i), đang chờ xử lý nhóm(i)),
S(i+1, đang chờ xử lý)
Xin lưu ý rằng tôi có thể thiếu một số tình huống cơ bản.
Độ phức tạp của thuật toán này là O(2^G * N * logn(N))
Và O(2^G * N)
không gian. 2^G*N
đại diện cho kích thước của bài toán con.
Theo ước tính, đối với G<=10
Các giá trị nhỏ và cao của N>=100000
, thuật toán này chạy rất nhanh. vì G>=20
giá trị trung bình của N<=10000
Để thuật toán hội tụ thì nó cũng phải ở mức thấp. Và đối với G>=40
Đối với giá trị cao của , thuật toán không hội tụ.
Về thuật toán tìm danh mục dự án tối ưu theo các ràng buộc cụ thể, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/8800226/
Giới hạn hiện tại của cửa sổ trượt Giới hạn hiện tại của cửa sổ trượt là một thuật toán giới hạn hiện tại được sử dụng phổ biến. Bằng cách duy trì một cửa sổ có kích thước cố định, số lượng yêu cầu được phép truyền trong một đơn vị thời gian không vượt quá ngưỡng đã đặt. Cụ thể, thuật toán giới hạn dòng cửa sổ trượt thường bao gồm các bước sau: Khởi tạo: Thiết lập cửa sổ
Đánh giá biểu thức: một biểu thức chỉ có +,-,*,/, không có dấu ngoặc đơn Một cách kỳ diệu: sử dụng một mảng để lưu trữ các số và toán tử, trước tiên tính toán phép nhân và phép chia với mức độ ưu tiên cao, sau đó tính tổng cộng Phép trừ int GetVal. (chuỗi s){
[Thuật toán] Câu hỏi về Tổng tiền tố Trước tiên, hãy xem xét một câu hỏi: (Câu hỏi về tiền tố và mẫu) Cho một mảng A[], bây giờ chúng ta muốn tìm tổng của một số số trong đó. Định dạng đầu vào: Đầu tiên có các số nguyên N, M, tức là có tổng cộng N số, có M nhóm truy vấn, sau đó có N số, tức là A[1]..
1. Để duyệt thứ tự trước theo thứ tự gốc-trái-phải, bạn có thể sử dụng đệ quy void preOrder(Node *u){ if(u==NULL)return;
Đầu tiên hãy nhìn vào câu hỏi. Đồ vật không thể tách rời mà phải mang đi hoặc để lại. Vì vậy, nó được gọi là ba lô 01 (chỉ có hai trạng thái: không lấy và không lấy). 4 món đồ vào một chiếc ba lô có sức chứa 10 Chúng ta có thể đơn giản hóa bài toán và phân tích trọng lượng từ nhỏ đến lớn
Gần đây tôi đã gặp phải vấn đề này trong một cuộc phỏng vấn: Cho ma trận sau: [[ RRRRRR], [ RBBBRR], [ BRRRBB], [ RBRRRR]] tìm nếu có
Tôi đang cố gắng gửi email qua thuật toán C++ từ tài khoản Outlook của mình, tài khoản này đã được mở và ghi nhật ký nhưng thực sự không biết bắt đầu từ đâu (để tích hợp Outlook-C++) và Google không giúp tôi nhiều đến vậy . Mọi lời khuyên sẽ được đánh giá rất cao.
Tôi thấy mình đang viết một vòng lặp while thủ công như thế này: std::list foo; // Trong trường hợp của tôi, bản đồ, nhưng danh sách thì đơn giản hơn auto currentPoin;
Tôi có mã opencv để phát hiện hình vuông. Bây giờ tôi muốn mã chạy lệnh khác sau khi phát hiện hình vuông. Mã như sau: #include "cv.h" #include "cxcore.h" #include "high
Tôi đang cố gắng mô phỏng hàm matlab "imfill" để điền vào hình ảnh nhị phân (ma trận 2D gồm 1 và 0). Tôi muốn chỉ định điểm bắt đầu trong ma trận và thực hiện tràn ngập giống như phiên bản 4 kết nối của imfill. cái này đã tồn tại ở chưa
Tôi đang đọc "Thuật toán trong C++" của Robert Sedgewick. Phần lặp lại cơ bản được đề cập là Lần lặp lại này xuất hiện trong đầu vào vòng lặp để loại bỏ sự lặp lại của một mục
Tôi đang suy nghĩ về cách tạo cấu trúc dữ liệu thể hiện các nhiệm vụ trong lịch của tôi (chỉ dành cho mục đích sử dụng cá nhân của tôi). Tôi có các bản ghi nhiệm vụ từ DBMS được sắp xếp theo ngày như sau: Mua sữa (18/1/2013) Ngày nhiệm vụ (15/01/2013) Thẻ nhiệm vụ (
Chỉ nhập một mảng số nguyên chưa được sắp xếp A[1..n] O(d): (d int) đếm số lần mỗi phần tử xuất hiện trong danh sách trong một lần lặp. bản đồ là Cây tìm kiếm nhị phân cân bằng dựa trên việc đảm bảo O(nl
Tôi có một vấn đề nhưng tôi vẫn không biết làm thế nào để giải quyết nó. Tôi đã tìm ra cách thực hiện nó một cách mạnh mẽ, nhưng nó không hiệu quả khi có hàng nghìn phần tử. Vấn đề: Giả sử bạn được cung cấp những điều sau đây
Tôi có một danh sách các danh sách. L1= [[...][...][.....].....] Nếu tôi nhận được tất cả các phần tử và trích xuất các giá trị duy nhất từ chúng sau khi làm phẳng danh sách, thì tôi nhận được Danh sách A L2 . Tôi có một danh sách L3 khác là một số L2
Chúng ta nhận được một mảng ma trận 2D (giả sử chiều dài i và chiều rộng j) và một số nguyên k, chúng ta phải tìm kích thước của hình chữ nhật nhỏ nhất chứa tổng này hoặc lớn hơn Fe k=7 4 1 1 1 1 1 4 4 Câu trả lời là 2 vì 4+4=8 >= 7,
Tôi triển khai hệ thống đảo ngược 3 danh mục và thay đổi danh mục mỗi tuần. Thứ tự là lớp buổi sáng (m), lớp buổi tối (n) và lớp buổi chiều (a). Tôi có một đơn hàng cố định không bao giờ thay đổi, ngay cả khi tôi không làm việc trong tuần đó. Tôi đã tạo một hàm để lấy số tuần ISO. Khi tôi cho nó một cuộc hẹn hò
Giả sử chúng ta có một đầu vào là danh sách các phần tử: {a, b, c, d, e, f} và các bộ khác nhau có thể chứa bất kỳ sự kết hợp nào của các phần tử này hoặc có thể chứa các phần tử khác không có trong danh sách đầu vào : A:{e,f} B:{d,f,a} C:
Tôi có thuật toán tập hợp con tìm tất cả các tập hợp con của một tập hợp nhất định. Vấn đề với tập hợp ban đầu là nó là một tập hợp đang phát triển và nếu các phần tử được thêm vào nó, tôi cần phải tính toán lại các tập hợp con của nó. Có cách nào để tối ưu hóa thuật toán tập hợp con bắt đầu lại từ điểm tính toán cuối cùng không
Tôi có một bảng chứa 1 triệu ký hiệu và tần số dự kiến của chúng. Tôi muốn nén một chuỗi các ký hiệu này bằng cách gán cho mỗi ký hiệu một chuỗi bit có độ dài thay đổi duy nhất (và có tiền tố), sau đó ghép chúng lại với nhau để thể hiện chuỗi. Tôi muốn phân bổ các chuỗi bit này để chuỗi được mã hóa trước
Tôi là một lập trình viên xuất sắc, rất giỏi!