Toán rời rạc cần thiết như thế nào cho tư duy lập trình?

Xin chào mọi người !
Mình đã học xong năm nhất viễn thông và đã học một chút về C.
Ngành này ở trường mình mãi kì 2 của năm 3 mới học về C++ và chỉ đào tạo ở mức cơ bản .
( nhiều sinh viên sợ môn này vì nghĩ rằng học lập trình không cần thiết)
Mình thì không nghĩ vậy và muốn học nghiêm túc nhưng không có môi trường ( nên mình đã đi học ké ở các lớp công nghệ. Bạn nói rằng phải học cả Toán rời rạc nữa vì đó là tư duy cho lập trình !
Cho mình hỏi toán rời rạc cần thiết như thế nào ak ? Xin mọi người chỉ giáo
( các môn ở ngành mình cũng hơi nặng ùi nên học thêm cũng hơi vất ak)
Cảm ơn nhiều !

7 Likes

Toán rời rạc ở trường mình thì nó chỉ là lấy một phần của môn cấu trúc dữ liệu và giải thuật để bỏ qua, giúp cho môn cấu trúc dữ liệu và giải thuật được giảm nhẹ lại, để cho sinh viên trường mình nó tiếp thu mới kịp đc.
Không biết ở trường khác thì thế nào nhưng mình nghĩ thay vào đó bạn học thẳng cấu trúc dữ liệu và giải thuật luôn cho khỏe.

7 Likes

Toán rời rạc một phần về xác suất tổ hợp một phần về mấy cái thuật toán. Theo mình thì học cái này cũng gần gần như Cấu trúc dữ liệu và giải thuật.

2 Likes

Đạt cũng học qua toán rời rạc, nếu bỏ 10 tiếng học toán rời rạc và 1 tiếng ngồi code thì Đạt thấy 1 tiếng ngồi code có tác dụng hơn.

Vì câu hỏi này được nhiều người quan tâm, Đạt xin bổ sung thêm câu trả lời này

21 Likes

Môn này mình thấy khó nhưng hay. Rèn luyện tư duy tốt.
Có đợt đi pv, có công ty cho làm gần 20 câu về toán rời rạc và tạch :D.
Mà nếu bỏ qua được thì bỏ qua. Học thẳng lên cấu trúc giải thuật luôn.

5 Likes

Toán rời rạc là nền tảng của thuật toán và nhiều mô hình quan trọng trong máy tính (Logic, đại số bool, lý thuyết đồ thị, xác suất, tổ hợp…). Nó là cái nền toán học quan trọng của máy tính. Nếu trở thành lập trình viên, có thể bạn sẽ không thấy nó quan trọng nhưng khi học hay làm việc liên quan đến thuật toán, bạn sẽ ước gì mình được học toán rời rạc sâu hơn. Tùy hướng bạn đi mà có thể lựa chọn thời gian đầu tư thích hợp.

5 Likes

bạn ơi mình xem chương trình học của công nghê thì năm kì 1 học toán rời rạc kì 2 học cấu trúc dữ liệu và giải thuật ý ! nên mình cũng đang phân vân lắm

Đúng là toán rời rạc cực kì cần thiết trong ngành khoa học máy tính, phát triển theo hướng nghiên cứu. Nếu bạn muốn trở thành một lập trình viên bình thường thì toán rời rạc cũng không cần thiết lắm đâu. Nhưng có thêm kiến thức thì chắc cũng không hại gì đâu nhiw, nếu có thời gian bạn cứ học qua toán rời rạc xem sao. :wink:

2 Likes

Toán rời rạc rất có ích trong việc lập trình bên trí tuệ nhân tạo, mà theo mình biết thì nó có ứng dụng rất nhiều trong ngành khoa học máy tính. Chủ yếu dùng để nghiên cứu, xây dựng thuật toán :slight_smile: . Còn nhiều thứ khác nữa nếu bạn học ngành khoa học máy tính chuyên sâu về nghiên cứu thì sẽ biết nó cần thiết như thế nào :slight_smile:

1 Like

Mọi người thường hay đùa rằng học môn này não của bạn có thể sẽ “rời” ra luôn :smile: Còn nhớ mang máng phần ánh xạ mà ông thấy chứng minh được 2 > 3 :v

3 Likes

nguồn voer

Tổng quan môn học

Toán học rời rạc ngày nay đã trở thành quen thuộc trong những năm gần đây bởi những ứng dụng to lớn của nó trong các ngành tinh học. Toán học rời rạc là một ngành toán học giải quyết các đối tượng hay cấu trúc rời rạc. Đối tượng rời rạc là những đối tượng mà chúng có thể được phân biệt, phân tách ra khỏi nhau để có thể đếm được. Số tự nhiên, số hữu tỉ (được coi như là tỉ số của 2 số tự nhiên), môtô, nhà, người, … là những đối tượng rời rạc. Mặt khác số thực bao gồm số vô tỉ là không rời rạc (chúng ta biết rằng giữa hai số thực khác nhau luôn tồn tại một số thực khác chúng). Thuật ngữ “Toán học rời rạc ” cũng để phân biệt với “Toán học liên tục”. Trong khi các đối tượng rời rạc thường được coi như có sự liên quan mật thiết tới số tự nhiên thì các đối tượng liên tục là số thực Trong modul này, chúng ta sẽ nghiên cứu những đối tượng rời rạc như số tự nhiên, mệnh đề, tập, quan hệ, hàm, đồ thị, hay lý thuyết số, …tất cả chúng đều rời rạc. Chúng ta sẽ học các khái niệm, tính chất và quan hệ giữa chúng với nhau và với các đối tượng khác.

Một quan điểm rộng rãi hơn, gộp tất cả các ngành toán học làm việc với các tập hữu hạn hoặc đếm được vào toán học rời rạc như sốhọcmodulom,lýthuyếtnhómhữuhạn,lýthuyếtmật mã,...

Có thể nêu ra đây một vài ví dụ dùng tới toán học rời rạc:

- Có bao nhiêu password hợp lệ cho một hệ thống máy tính ?

- Có tồn tại một đường nối giữa 2 máy tính trong một mạng

- Có bao nhiêu địa chỉ internet hợp lệ?

- Đường đi ngắn nhất giữa 2 máy tính trong một mạng là gì?

- Có bao nhiêu bước trong quá trình sắp xếp?

- Có bao nhiêu mạch để cộng 2 số nguyên được thiết kế?

- Khả năng trúng giải thưởng cho một vé số là bao nhiêu?

- Cách tốt nhất để lập lịch 8 cuộc họp hội đồng các thành viên mà không có bất

kỳ sự cạnh tranh nào, giả thiết đưa ra là 1 vài người có tên trong hơn 1 hội đồng.

- Làm thế nào chúng ta có thể lập lịch tất cả các nhiệm vụ trong dự án lớn này (giống như 1 dự án xây dựng hoặc dự án để bắt đầu đưa 1 sản phẩm mới ra thị trường).

- Sẽ có đủ số điện thoại để cung cấp tất cả điện thoại, máy fax, và điện thoại di động trong cho Việt Nam?

- Làm thể nào chúng ta có thể mô hình và phân tích 1 sự thay đổi dân số, hoặc thay đổi lượng tiền trong một dự án đầu tư

Modul sẽ học những cấu trúc rời rạc và các kỹ thuật để giải quyết những vấn đề

này.

Vậy một câu hỏi đặt ra là : Toánrờirạcđược dùngkhi nào?Thực tế Toán học rời rạc được dùng rất đa dạng trong nhiều chuyên ngành, lĩnh vực. Tuy nhiên, có thể thấy phần lớn nó được dùng khi liên quan tới:

- Đếm các đối tượng

- Xem xét quan hệ giữa những tập hữu hạn (hoặc đếm được)

- Phân tích quá trình có số bước hữu hạn.

- Cơ bản về tất cả những xử lý thông tin số: Những thao tác trên các cấu trúc

rời rạc trong bộ nhớ.

- Nó là ngôn ngữ cơ bản và là khái niệm nền tảng cho tất cả các lĩnh vực

trong khoa học máy tính.

- Các khái niệm rời rạc cũng được sử dụng rộng rãi trong toán học, kỹ thuật,

kinh tế, sinh học,…

Đặc biệt toán học rời rạc là một công cụ tuyệt vời để suy luận logic.

T ẠI S A O L ẠI H Ọ C TOÁN R Ờ I R ẠC

Có một số lý do quan trọng để nghiên cứu Toán học rời rạc.

Thứ nhất, thông qua modul này, người học có thể phát triển khả năng toán học, đó là khả năng hiểu và tạo ra các chủ đề của toán học. Người học sẽ vô cùng khó khăn để tiến xa trong ngành tin học mà không có những kiến thức toán học này.

Thứ hai, Toán học rời rạc cung cấp cơ sở toán học để mở ra cánh cửa cho người học có thể tiếp tục với những modul cao hơn cho các khóa học của khoa học máy tính, bao gồm: cấu trúc dữ liệu, thuật toán, lý thuyết cơ sở dữ liệu, lý thuyết automat, ngôn ngữ hình thức, trình biên dịch, bảo mật máy tính, thiết kế mạch máy tính, mạng máy tính và hệ điều hành, …sinh viên có thể nhận thấy những khóa học trên vô cùng khó khăn nếu không có một cơ sở toán học của modul Toán học rời rạc này.

Toán học rời rạc là toán tính toán

Khoa học máy tính hiện đại được xây dựng hầu hết dựa trên Toán học rời rạc, đặc biệt là toán tập hợp và lý thuyết đồ thị. Điều này có nghĩa là: các nhà lập trình máy tính và sinh viên muốn học các thuật toán cơ bản thì sẽ phải cần một nền tảng Toán học rời rạc chắc chắn. Bởi vậy, tại hầu hết các trường đại học, môn Toán học rời rạc là bắt buộc với sinh viên bậc đại học.

Toán học rời rạc là toán thế giới thực

Nhiều sinh viên than phiền về tính truyền thống của toán cấp 3 như: đại số, đồ thị, lượng giác, và phần tương tự như vậy- câu hỏi đặt ra là: “học toán cấp 3 với nội dung truyền thống như vậy tốt ở điểm nào?” Một vài chủ đề trừu tượng của toán học thường làm sinh viên sợ và không vượt qua được. Ngược lại, Toán học rời rạc , đặc biệt là toán đếm và xác suất, cho phép sinh viên ( kể cả h/s đang học cấp 3

– nhanh chóng tìm ra vấn đề quan trọng trong thế giới thực những vấn đề khó nhưng lại rất thú vị).

Toán học rời rạc dạy suy luận toán học và các kỹ thuật chứng minh

Đại số thường dạy sinh viên nhớ chuỗi các công thức và thuật toán (ví dụ, công thức quadratic, các hệ thống phương trình tuyến tính..), và hình học thường được dạy như là 1 chuỗi các bài tập áp dụng “định nghĩa – định lý – chứng minh”.

Còn với Toán học rời rạc , sinh viên sẽ suy nghĩ linh hoạt và sáng tạo. Có các mối quan hệ giữa 1 vài công thức. Có 1 số khái niệm cơ bản để làm chủ và ứng dụng Toán học rời rạc trong nhiều cách khác nhau.

Toán học rời rạc rất vui

Nhiều sinh viên, đặc biêt là những sinh viên sáng dạ và năng động tìm ra rằng đại số, hình học và thậm chí cả tích phân không gây thích thú. Hiếm khi những chủ đề này gây thích thú như những chủ đề Toán học rời rạc . Khi chúng ta hỏi sinh viên về chủ đề mà họ thích, hầu hết đều nhận được trả lời là toán tập hợp hoặc lý thuyết số. (Khi chúng ta hỏi sinh viên về chủ đề mà ít gây thích thú với họ nhất, phần đa trả lời là “hình học”). Và thật đơn giản hầu hết sinh viên đều nhận ra rằng Toán học rời rạc nhiều niềm vui hơn đại số và hình học.

T O Á N H Ọ C R Ờ I R Ạ C N GH I Ê N C Ứ U N H Ữ N G GÌ ?

Toánhọcrờirạc là tên chung của nhiều ngành toánhọc có đối tượng nghiên cứu là các tậphợprờirạc, các ngành này được tập hợp lại từ khi xuất hiện khoahọcmáytính làm thành cơ sở toán học của khoa học máy tính. Nó còn được gọi là toán họcdànhchomáytính.

Có thể nói toán học rời rạc ngày càng có tầm quan trọng trong nhiều ngành khoa học máy tính cũng như trong công việc lập trình. Có nhiều khái niệm của toán học được nghiên cứu trong Toán học rời rạc. Chúng ta có thể nhắc tới một số chủ đề trong Toán học rời rạc sau đây khi chúng đã được áp dụng rất nhiều trong khoa học máy tính:

Algorithmics– Thuậttoán, còn gọi là giảithuật, là một tập hợp hữu hạn của các chỉ thị hay phương cách được định nghĩa rõ ràng cho việc hoàn tất một số sự việc từ một trạng thái ban đầu cho trước; khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như đã dự đoán.

Nói cách khác, thuật toán là một bộ các qui tắc hay qui trình cụ thể nhằm giải quyết một vấn đề trong một số bước hữu hạn, hoặc nhằm cung cấp một kết quả từ một tập hợp của các dữ kiện đưa vào. Thuật toán đôi khi còn được gọi là phương thức, thủ tục, hay kỹ thuật.

Trong ngành khoahọcmáytính, thì thuật toán là được thể hiện thông qua một chươngtrìnhmáytính (hay một tập hợp các chương trình máy tính) được thiết kế để giải quyết một số loại vấn đề một cách có hệ thống. Một thí dụ kinh điển trong ngành khoa học máy tính là thuật toán đệquy dùng để giải bàitoánthápHàNộiBooleanAlgebra– cách tính toán và biểu diễn các biểu thức trên hệ cơ số, nó cũng nghiên cứu các khái niệm điện tử học như cổng logic….

Combinatorics– Là một nhánh của toná học nghiên cứu tới liệt kê, tổ hợp, hoán vị

các tập phần tử, những tính chất và những quan hệ của chúng.

ComputabilityandComplexityTheories– Lý thuyết về độ phức tạp và khả năng tính toán - Liên quan tới combinatorics và algorithmics, nhưng nó tập trung vào những giới hạn về thực hành cũng như lý thuyết trong các mô hình tính toán khác nhauđể giải quyết bài toán. Lý thuyết về độ phức tạp và khả năng tính toán. Trong khoa học máy tinh, nó thường dùng ký hiệu O (Big-O).

Counting– Liên quan tới các khái niệm và kỹ thuật đếm, liệt kê và tính toán trong các hệ số khác nhau.

GraphTheory– Lý thuyết đồ thị - Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể được biểu diễn bằng đồ thị. Ví dụ, cấu trúc liên kết của một website có thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các trang web hiện có tại website, tồn tại một cạnh có hướng nối từ trang Atới trang B khivàchỉkhiAcó chứa 1 liên kết tới B. Do vậy, sự phát triển của các thuậttoán xử lý đồ thị là một trong các mối quan tâm chính của khoahọcmáytính

InformationTheory– Lý thuyết thông tin – Áp dụng toán học vào truyền thông, nó dựa phần lớn vào xác suất và thông kê để nghiên cứu những lĩnh vực như phân tích dữ liệu, mạng, truyền thông, tính toán lượng tử …

Logic– Theo truyền thống, logic được nghiên cứu như là một nhánh của triếthọc. Kể từ giữa thế kỉ 19 logic đã thường được nghiên cứu trong toánhọc và luật. Gần đây nhất logic được áp dụng vào khoahọcmáytính và trítuệnhântạo. Là một ngànhkhoahọchìnhthức, logic nghiên cứu và phân loại cấu trúc của các khẳng định và các lý lẽ, cả hai đều thông qua việc nghiên cứu các hệthốnghìnhthức của việcsuyluận và qua sự nghiên cứu lý lẽ trong ngôn ngữ tự nhiên.

MathematicalRelations– Quan hệ - liên quan tới lý thuyết tập, các quan hệ là việc

gán một giá trị cho một tổ hợp của k-phần tử.

NumberTheory– Là một nhánh lớn của toán học nghiên cứu những tính chất của

số nguyên.

Proofs– chứng minh – Dùng lập luận logic toán học để chứng minh một biểu thức là đúng, sai.

Functions- Hàm - Trong toánhọc, khái niệm hàmsố(hay hàm) được hiểu tương tự như khái niệm ánhxạ. Nếu như ánh xạ được định nghĩa là một quitắc tuơng ứng áp dụng lên hai tậphợp bất kỳ (còn được gọi là tập nguồn và tập đích), mà trong đó mỗi phần tử của tập hợp này (tập hợp nguồn) tương ứng với một và chỉmộtphần tử thuộc tập hợp kia (tập hợp đích), thì ta hoàn toàn có thể coi hàm số là một trường hợp đặc biệt của ánh xạ, khi tập nguồn và tập đích đều là tậphợpsố

SetTheory– Nghiên cứu tập các phần tử. Mặc dù bất ký một kiểu đối tượng nào cũng có thể tập hợp lại thành tập nhưng lý thuyết tập thường áp dụng cho các đối tượng trong toán học.

Linearalgebra- Đại số tuyến tính - được sử dụng nhiều trong toán học, như trong đạisốđạicương, giảitíchhàm, hìnhhọcgiảitích... để giải các bài toán như phépquay trong khônggian, nộisuybìnhphươngnhỏnhất, nghiệm của hệ phươngtrìnhviphân, tìm đườngtròn qua ba điểm... Nó cũng có vô vàn ứng dụng trong khoahọctựnhiên (vậtlý, côngnghệ...) và khoahọcxãhội (kinhtế...), vì các mô hình phi tuyến tính hay gặp trong tự nhiên và xã hội thường có thể xấp xỉ bằng mô hình tuyến tính.

Như chúng ta đã thảo luận phần trước, các cấu trúc toán học có thể được xây dựng hay chỉ ra thông qua các cấu trúc đơn giản hơn. Chính biểu đồ trên phác thảo một vài cách mà các cấu trúc rời rạc (và liên tục) đa dạng cuối cùng cũng được tạo nên từ cấu trúc rời rạc rất đơn giản là tập (set), cấu trúc này chúng ta sẽ sớm tiếp cận. Biểu đồ cũng cho chúng ta thấy được phần nào quan hệ của các đối tượng toán học. Tuy nhiên, biểu đồ đã được đơn giản hóa đi rất nhiều, nhiều cấu trúc khác cũng như các cách định nghĩa các cấu trúc thông chúng đã được lược bỏ. Ví dụ, các tập có thể được định nghĩa thông qua các hàm, hoặc các quan hệ. Không có một cấu trúc nào là cơ bản thực sự, bởi vì hầu hết cấu trúc có thể được định nghĩa thông qua hầu như bất kỳ các kiểu khác. Các tập chỉ có thể là điểm bắt đầu nhưng chúng phổ cập được bởi vì định nghĩa của chúng quá đơn giản. Trong modul này, chúng ta sẽ xem xét biểu đồ chi tiết để thấy được các cấu trúc này liên hệ với nhau như thế nào.

Mình nghĩ món này cần thiết cho việc nghiên cứu về Security hơn, còn dev thì chỉ cần biết qua thôi.

4 Likes

Toán rời rạc không phải để tư duy đâu bạn. Do làm lập trình phần mềm không đụng đến đây chứ! Bạn theo Khoa học máy tính thì sẽ biết ứng dụng của nó thế nào.

1 Like

cho mình hỏi một chút về khoa học máy tính vs ak? bạn có thể miêu tả sơ qua về nó không ak ! cảm ơn nhiều nhé =)

Computer science is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical procedures (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded as bits in a computer memory or transcribed in genes and protein structures in a biological cell.[1] An alternate, more succinct definition of computer science is the study of automating algorithmic processes that scale. A computer scientist specializes in the theory of computation and the design of computational systems.[2]

Its subfields can be divided into a variety of theoretical and practical disciplines. Some fields, such as computational complexity theory (which explores the fundamental properties of computational and intractable problems), are highly abstract, while fields such as computer graphics emphasize real-world visual applications. Still other fields focus on the challenges in implementing computation. For example, programming language theory considers various approaches to the description of computation, while the study of computer programming itself investigates various aspects of the use of programming language and complex systems. Human–computer interaction considers the challenges in making computers and computations useful, usable, and universally accessible to humans.
Wikipedia.

Khoa học máy tính nó bao gồm nhiều ngành lắm, ở đây mình đề cập đến cách chia theo kiểu Việt Nam (Ở nước ngoài CNPM là một nhánh con trong KHMT):
Khoa học máy tính là ngành nghiên cứu về… máy tính, mọi vấn đề liên quan đến cách thức xử lý của máy tính. Có thể chia làm các nhánh con (Các nhành này ko tách biệt hoàn toàn mà có phần giao nhau khá lớn):

  • Lý thuyết về khoa học máy tính (theoretical computer science): Nghiên cứu về lý thuyết hoạt động của máy tính (cách lưu trữ, biểu diễn thông tin, tính toán), automata, giải thuật và độ phức tạp thuật toán, ngôn ngữ lập trình, tình biên dịch.
  • Trí tuệ nhân tạo: Nghiên cứu về các giải thuật thông mình dùng trong máy tính: Tìm lời giải, lập lịch, lập luận, máy học (dạy cho máy có thể tự học), thị giác máy tính (làm cho máy có thể nhìn), xử lý ngôn ngữ tự nhiên.
  • Đồ họa máy tính: Liên quan đến xử lý hình ảnh, video.
  • An ninh máy tính: Liên quan đến mã hóa, mật mã, ẩn dữ liệu v.v…

Nếu bạn đi hơi sâu vào tí thôi một trong các ngành này bạn sẽ thấy kiến thức toán được dạy là không đủ, một phần vì ở VN người ta đi theo CNPM nhiều hơn nên không cần thiết dạy quá sâu cho tất cả mọi người. Những trường chuyên về các mảng này ở nước ngoài họ học toán rất nặng.

7 Likes

Học mấy cái này vui lắm nha, bạn sẽ nhìn máy tính ở một cách nhìn khác mà học CNPM chắc khó biết được. Chẳng hạn như bạn biết được ở phía sau của ngôn ngữ nó làm trò gì, trình biên dịch hoạt động thế nào, máy tính xử lý ra sao… Bài toán nào máy tính không bao giờ giải quyết được, bài toán nào không nên giải quyết trực tiếp mà nên tìm giải thuật gần đúng.
Làm sao mà google, facebook nhận dạng được khuôn mặt, tiếng nói, làm sao để cho máy tính tự tìm cách xử lý bài toán nào đó, làm cách nào để cho chương trình tự “tiến hóa”… Nói chung là cũng thú vị lắm, mà ở VN hơi khó để đi xa.

6 Likes

ôi nghe bạn nói thật sự mình thấy vô cùng thú vị và nhận ra rằng mình chưa biết tí gì …( còn quá nhiều thứ để học)
Cảm ơn bạn nhiều đã giúp mình biết thêm được những điều hay ho… :blush:

2 Likes

Khoa học máy tính hay bị hiểu nhầm là những thứ chỉ dùng để nghiên cứu - mình cũng từng như thế cho tới khi đọc danh sách học phần của nó, cực kỳ hay nhất là trong thời đại di động, các App xử lý ảnh, âm thanh, kỹ thuật nén ảnh, video dung lượng thấp nhưng giữ nguyên chất lượng, trí tuệ nhân tạo. CNPM thì toàn học làm mấy phần mềm quản lý nhìn chung hơi chán.

4 Likes

Nghe bạn nói thấy thú vị thật, cũng từng nghe về machine learning là thấy khoái rồi, mấy cái về cnpm còn có thể tự học đc chứ mấy cái về khmt này có vẻ khoai :frowning:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?