Làm thế nào để xây dựng một vấn đề tính toán chặt chẽ?


20

Tôi thường tương tác với những người muốn yêu cầu một thuật toán cho một vấn đề tính toán (hoặc độ phức tạp của nó), nhưng họ không diễn đạt nó theo cách nghiêm ngặt để chúng tôi (các nhà khoa học máy tính) hiểu.

Việc giới thiệu chúng đến những cuốn sách như CLRS không hữu ích bởi vì các ví dụ thường có cách nói khá đơn giản, ví dụ như đưa ra danh sách kề của một đồ thị và hai đỉnh trong đó tính đường đi ngắn nhất giữa các đỉnh đó.

Có cuốn sách hay nào (hoặc một số tài nguyên khác) mà một người có kiến ​​thức tối thiểu về CS có thể học cách người ta nên hình thành và nêu các vấn đề tính toán theo cách nghiêm ngặt dễ hiểu đối với các nhà khoa học máy tính không?

Tốt nhất là cuốn sách nên có nhiều ví dụ về cách xây dựng các vấn đề tính toán một cách chặt chẽ từ các ví dụ khác nhau trong miền và thế giới thực.


Làm rõ

Để làm cho câu hỏi cụ thể hơn, hãy giả sử rằng họ biết các thuật ngữ toán học / CS cơ bản như bộ, hàm, biểu đồ, danh sách, v.v ... ở cấp độ của sinh viên CS năm thứ 1/2 lí trí). Ví dụ, họ đã đọc một số sách giáo khoa giới thiệu như Aho và Ullman (mặc dù họ có thể không hiểu nó hoàn toàn).


2
Tôi nghĩ rằng đây là một câu hỏi hay, nhưng tôi không biết liệu có câu trả lời hay không. Tôi cảm thấy giống như kiểu hỏi "Có cách nào chúng ta có thể dạy ai đó không phải là nhà khoa học máy tính suy nghĩ như nhà khoa học máy tính không?" Và câu trả lời cho điều đó là "có, hãy biến họ thành một nhà khoa học máy tính". Điều đó nói rằng, một số nhà nghiên cứu công nghệ phần mềm có thể đã thực hiện các nghiên cứu về những thứ như thế này.
jmite

3
Ngoài ra, tôi nghĩ rằng đây là những gì các trường hợp sử dụng là, ở một mức độ. Nếu ai đó không hiểu cách xây dựng chính xác vấn đề của họ, hãy liệt kê một số tình huống về những gì họ muốn một chương trình nhất định thực hiện và hành vi dự kiến ​​trong từng trường hợp. Các lập trình viên sau đó phát triển một đặc điểm kỹ thuật từ đó. Điều đó nói rằng, tôi là một người lý thuyết, không phải là một kỹ sư, vì vậy nếu tôi sai, hãy thoải mái sửa chữa cho tôi.
jmite

@jmite, cảm ơn bạn đã cho ý kiến. Bạn đúng rằng một phần của Kỹ thuật phần mềm là cố gắng hiểu khách hàng muốn gì (tôi nghĩ họ gọi đó là phân tích yêu cầu ). Nhưng đó thường là cho các dự án lớn. Tôi không nói về những dự án như vậy, nhưng những câu hỏi đơn giản như những câu hỏi chúng tôi nhận được trên trang web này không được nêu rõ. Tôi đã thấy những cuốn sách dạy mọi người cách nêu một tuyên bố bằng logic với nhiều ví dụ. Tôi hy vọng rằng có một cái gì đó tương tự cho các thuật toán và các vấn đề tính toán.
Kaveh

1
Điều đó nói rằng, tôi cho rằng nó đòi hỏi một cách suy nghĩ nhất định mà không dễ dàng có được, đặc biệt là bởi người lớn. Tôi đã cố gắng khiến mọi người bỏ các công cụ kỹ thuật và giải thích vấn đề một cách đơn giản nhất có thể về các đối tượng hàng ngày. Vấn đề là, họ thường sẽ quên một số ràng buộc, hoặc họ sẽ làm cho nó giống như một hoạt động là O (N) trong hệ thống thực tế của họ là O (1), v.v. Vì vậy, tôi sẽ kết thúc với một cái gì đó rất gần với một định nghĩa nghiêm ngặt về vấn đề sai.
svinja

2
theo một cách nào đó, những gì được yêu cầu là mâu thuẫn, bởi vì việc xây dựng các vấn đề một cách chặt chẽ chính xác là một trong những kỹ năng quan trọng được phân tách giáo dân với các chuyên gia / chuyên gia ...
vzn

Câu trả lời:


3

một nguồn tài nguyên tốt về / cho điều này, khá nổi tiếng bởi các học giả nhưng không được biết đến rộng rãi ngoài các chuyên gia, là Viết toán học của Donald E. Knuth, Tracy L. Larrabee và Paul M. Roberts. có một cuốn sách được xuất bản, video bài giảng và một bộ ghi chú. nó được viết nhiều hơn từ góc độ của những người cố gắng thành thạo cách viết toán học, ví dụ như để tạo ra các bài báo, nhưng tất cả các lời khuyên đều có tính ứng dụng cao đối với trường hợp giáo dân cố gắng xây dựng các vấn đề một cách chính xác. Viết toán học trong khi ghê gớm để học là cách tiếp cận khoa học để xác định / xây dựng chặt chẽ các chi tiết và như các chi tiết cuốn sách, giải quyết , ví dụ như thông qua các thuật toán hoặc bằng chứng các vấn đề tính toán / thuật toán.

Ngoài ra, văn bản cổ điển của Garey & Johnson, Máy tính & Khả năng thu hút không mô tả chính xác cách thức hình thành vấn đề một cách chính xác, nhưng nó đưa ra nhiều ví dụ và các "mẫu" lý thuyết / khái niệm / kỹ thuật đa dạng, được tổ chức thành các phần của các vấn đề tương tự, có thể được được sử dụng như "khối xây dựng" để mô tả các vấn đề tính toán / thuật toán.


Cảm ơn vzn, đây là những tài nguyên tốt đẹp về viết toán nhưng tôi không tìm kiếm điều gì khác biệt. Vấn đề không phải là viết tốt trong toán học mà là tài nguyên để mọi người học cách hình thành các vấn đề tính toán đủ rõ ràng để một chuyên gia có thể hiểu những gì người hỏi đang tìm kiếm và giúp đỡ họ.
Kaveh

yw; bạn nói đó là hai điều khác nhau, và trong các từ / cụm từ đó là, nhưng & tôi nói chúng là [để mượn cụm từ kỹ thuật phần mềm] "kết hợp chặt chẽ"
vzn

3

Emmanuele Viola , prof (T) CS tại Đại học Đông Bắc), vừa mới chạy qua trang chủ tốt đẹp / gọn gàng, khác thường / chưa biết này trên trang chủ của mình . 41pp. nó bắt đầu với các khái niệm toán học rất cơ bản, ví dụ như hàm ý và sau đó bao quát tất cả các chủ đề nâng cao như định lý Erdős bồi Szekereslý thuyết Ramsey .


0

Mua cuốn sách Thuật toán và cấu trúc dữ liệu từ Robert Lafore.

Trên cuốn sách này, mọi thuật toán được giải thích như một câu chuyện, rất giống như một bài thơ. Sau đó, đưa cho người đó phiên bản Lafore của một thuật toán, và sau đó là phiên bản CLRS.

Có lẽ như thế này, người đó sẽ có cảm giác về cách dịch từ mô tả trực quan sang nghiêm ngặt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.