1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Giúp em với - Đếm tần xuất - đơn giản nhưng ..

Chủ đề trong 'Toán học' bởi fatmailer, 23/11/2006.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. fatmailer

    fatmailer Thành viên mới

    Tham gia ngày:
    12/02/2005
    Bài viết:
    2.266
    Đã được thích:
    0
    Giúp em với - Đếm tần xuất - đơn giản nhưng ..

    Em không chuyên về toán, đang ở môi trường hơi thiếu sách vở tra cứu, mà tìm trên net (google: giải thuật đếm tần xuất) thì không có... nên post lên đây mong các bác giúp đỡ.

    Chỉ đơn giản thế này thôi ạ: Em có một cái mảng số nhập vào, các giá trị đôi khi trùng nhau. Em muốn xem xem cái thằng nào xuất hiện nhiều/ít nhất, bao nhiêu lần (mà ko đi đếm tần số từng thằng).

    Không biết cái này có mấy giải thuật ạ? Mong các bác chỉ giáo.
    Giúp em với, gấp gấp ..
  2. dawn_of_love

    dawn_of_love Thành viên mới

    Tham gia ngày:
    03/08/2006
    Bài viết:
    163
    Đã được thích:
    0
    Có 1 ý thế này : Sx mảng theo chiều tăng (giảm) dần rồi tìm đoantoạn những số bằng nhau dài nhất
  3. Dien_Quyhoach_2_0

    Dien_Quyhoach_2_0 Thành viên mới

    Tham gia ngày:
    20/03/2004
    Bài viết:
    329
    Đã được thích:
    0
    có một dạng thuật toán với các giá trị của mảng từ 1 đến 2n thì có thể chuyển các số trong mảng ra cơ số 2 rồi sau đó tính tổng tất cả các bit 0 và 1 lại, kiểm tra vị trí các bít nào xuất hiện nhiều nhất thì sẽ tìm được số tương ứng
    ví dụ
    mảng 3 5 4 6 4 6 7 3 4 5
    có các bit tương ứng
    0011
    0101
    0100
    0110
    0100
    0110
    0111
    0011
    0100
    0101
    có bít đầu là 0 xuất hiện trong tất cả các lần
    có bít thứ hai là 1 xuất hiện 8 lần
    chỉ kiểm tra với các số có bít thứ hai là 1 thấy bít thứ 3 là 0 xuất hiện 5 lần, sau đấy kiểm tra tiếp với các số có 3 bít đầu là 010 thấy bít cuối là 0 xuất hiện 3 lần
    vậy số xuất hiện nhiều nhất là 0100
    ghi chú: bài toán trên thực tế thường dừng để kiểm tra số nào xuất hiện trên 50% bằng các cộng tất cả các bít theo vị trí lại và chia cho tổng số lượng số của mảng, sau đó làm tròn.
    ví dụ
    3 4 3 4 3 4 3 2 3 4 3 3 2 3
    011
    100
    011
    100
    011
    100
    011
    010
    011
    100
    011
    011
    010
    011
    4 10 8 chia cho 14 rồi làm tròn được 011 là số xuất hiện nhiều nhất
  4. fatmailer

    fatmailer Thành viên mới

    Tham gia ngày:
    12/02/2005
    Bài viết:
    2.266
    Đã được thích:
    0
    Trước tiên xin cảm ơn các bác đã chỉ bảo
    Thực chất đây là bài toán đếm độ sáng điểm ảnh từ ảnh đen trắng. Ảnh vào sẽ là ma trận cỡ 500x700, giá trị dao động trong khoảng 0 - 255.
    - Cách thứ nhất đơn giản về mặt ý tưởng, em đã nghĩ tới. Có điều đầu vào hơi lớn, đưa được cái mảng của em về mảng 1 chiều cũng đủ ngất, em sợ không khả thi.. (thanks DoL)
    - Cách thứ hai thì lại không sát với bài toán, thêm nữa có vẻ hơi phức tạp, đi xa yêu cầu BT. Em thấy cũng khó áp dụng trong BT này.. (Thanks DQh20)
    Em đang băn khoăn không biết có hàm nào, kỹ thuật nào trong các NNLT cơ bản giúp ta làm chuyện này không? Có giải thuật nào gần gũi hơn với BT này không?
    Xin các bác lại tiếp tục chỉ giáo
    Thanks
  5. haidelft

    haidelft Thành viên mới

    Tham gia ngày:
    05/06/2006
    Bài viết:
    516
    Đã được thích:
    0
    Bạn thử lập 1 mảng có 255 số hạng = 0, sau đó chạy lặp qua ma trận ảnh, giá trị bằng bao nhiêu thì + thêm 1 vào số hạng tương ứng của mảng. Cuối cùng tìm max của mảng đó. Đó chỉ là ý tưởng, tôi cũng chưa viết.
  6. fatmailer

    fatmailer Thành viên mới

    Tham gia ngày:
    12/02/2005
    Bài viết:
    2.266
    Đã được thích:
    0
    Cái này đúng quá bác ạ
    Em cứ nghĩ mãi, mình có cái điểm ảnh để làm gì? Hoá ra giá trị nó chỉ dao động trong khoảng 0-255, nên áp dụng cái mảng 266 phần tử vào là tiện nhất. Giá trị của các phần tử sẽ ghi lại tần số của điểm ảnh tương ứng.. Quay lại đây thấy bác gợi ý thế em càng vững tin
    Qua đó em cũng nhận ra rằng nếu không giới hạn khung giá trị đầu vào thì đúng là căng thẳng, hoặc giả giá trị đầu vào ko nguyên thì...

    Dẫu sao bài toán cũng đã được giải quyết xong. Xin chân thành cảm ơn các bác đã chỉ bảo.
  7. haidelft

    haidelft Thành viên mới

    Tham gia ngày:
    05/06/2006
    Bài viết:
    516
    Đã được thích:
    0
    ================================
    Cũng tình cờ thôi, hôm trước có đứa bạn hỏi sao mấy file ảnh cùng định dạng mà cái mất nhiều, cái mất ít bộ nhớ nên khi bạn nói đến file ảnh là hình dung ra ngay. Chắc không có ma trận ảnh nào là số thực đâu, bộ nhớ đâu mà chứa cho đủ. Mà nếu là số thực thì cũng có thể đưa về nguyên được. Thuật toán này đơn giản.
    Được haidelft sửa chữa / chuyển vào 02:33 ngày 25/11/2006

Chia sẻ trang này