SGKVN

Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính) - Bài 12: Thực Hành Kĩ Thuật Duyệt Cho Bài Toán Tìm Kiếm | Kết Nối Tri Thức Với Cuộc Sống

Bài 12: Thực Hành Kĩ Thuật Duyệt Cho Bài Toán Tìm Kiếm - Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính). Xem chi tiết nội dung bài Bài 12: Thực Hành Kĩ Thuật Duyệt Cho Bài Toán Tìm Kiếm và tải xuống miễn phí trọn bộ file PDF Sách Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính) | Kết Nối Tri Thức Với Cuộc Sống

(Trang 52)

Sau bài này em sẽ:

  • Biết và trình bày được kĩ thuật duyệt để giải quyết một vài bài toán tìm kiếm cụ thể.

Có lẽ em đã biết đến tính năng liệt kê danh sách bạn chung giữa những người dùng khác nhau để đề xuất kết bạn của Facebook. Nếu cần lập danh sách bạn chung của em và của một bạn khác trên Facebook thì em sẽ làm như thế nào?

NHIỆM VỤ 1

Cho tệp các tài khoản Facebook và danh sách bạn bè của tài khoản Facebook đó được lưu trong tệp. Mỗi dòng bao gồm tên tài khoản Facebook được ngăn cách với tên bạn bè bằng dấu hai chấm, tên bạn bè được ngăn cách nhau bởi dấu phẩy như sau:

ban_fb.inp

Nam: Sơn, Hương, Quang, Dũng, Tuấn, Tùng

Sơn: Mai, Danh, Quang, Dũng, Văn, Tùng

Hương: Phương, Hường, Hà, Dũng, Huyền, Tùng

Huyền: Ngọc, Hương, Quang, Lâm, Đức, Tùng

Hà: Trung, Hương, Phương, Dũng, Hải, Tùng

Hùng: Thành, Hương, Linh, Dũng, Tuấn, Nam

Viết chương trình đọc dữ liệu danh sách bạn bè từ tệp, sau đó cho phép người dùng nhập tên hai tài khoản Facebook từ bàn phím và in ra số bạn chung của hai tài khoản đó.

Hướng dẫn:

Phân tích: Ở bài toán này để tìm ra số bạn chung của hai tài khoản Facebook, chúng ta cần thực hiện hai bước sau:

Bước 1: Xác định danh sách bạn bè của hai tài khoản Facebook đó. Việc này được thực hiện bằng cách sử dụng thuật toán tìm kiếm để tìm ra số thứ tự của hai tài khoản trong danh sách tên Facebook, từ đó suy ra được danh sách bạn bè của hai tài khoản.

(Trang 53)

Bước 2: Sau khi đã xác định được danh sách bạn bè của hai tài khoản, chúng ta cần xác định số phần tử chung của hai danh sách đó. Việc này có thể thực hiện bằng cách duyệt từng phần tử trong một danh sách xem phần tử này có xuất hiện trong danh sách còn lại hay không? Nếu có xuất hiện, tăng số bạn chung lên một, nếu không xuất hiện, tiếp tục duyệt đến phần tử tiếp theo trong danh sách cho đến hết.

Bài toán tìm số bạn chung có thể được thực hiện như sau:

banchung.py

1    def banchung(A, B):        # tính số phần tử chung có trong 2 danh sách

2          kq = 0

3          for i in range(len(A)):

4                if A[i] in B:

5                    kq = kq + 1

6           return kq

7

8     input_file = open("ban_fb.inp", encoding = "utf-8")

9     ten_fb = []

10   ban_fb = []

11   for line in input_file.readlines():

12    ten, ban = line.split(":")

13    ten_fb.append(ten)

14    ban = ban.strip().split(",")

15    for i in range(len(ban)):

16          ban[i] = ban[i].strip()

17          ban_fb.append(ban)

18          input_string = input("Nhập tên 2 tài khoản Facebook cần kiểm tra:")

19          ten1,ten2 = input_string.split()

20    index1 = index2 = -1

21    for i in range(0,len(ten_fb)):              # tìm vị trí của tài khoản thứ

22    if ten1==ten_fb[i]:                 # nhất trong danh sách

          index1 = i

23    for i in range(0,len(ten_fb)):               # tìm vị trí của tài khoản thứ hai trong danh sách

24    if ten2==ten_fb[i]:       

25        index2 = i

26    if (index1==-1) or (index2==-1):

(Trang 53)

27        print("Không tồn tại tài khoản cần tìm trong danh sách")

28   else:

29       print("Số bạn chung của hai tài khoản Facebook là:",banchung(ban_fb[index1],ban_fb[index2])) 

NHIỆM VỤ 2

Cho trước tên các tài khoản Facebook và danh sách nhóm mà tài khoản đó tham gia, được lưu trong tệp. Mỗi dòng bao gồm tên tài khoản Facebook được ngăn cách với tên các nhóm bằng dấu hai chấm, tên các nhóm được ngăn cách nhau bởi dấu phẩy như sau:

group_fb.inp

Nam: học tập, phim ảnh, đá bóng, kpop, cpop, thời trang

Sơn: học tập, chụp ảnh, đá bóng, du lịch, cpop, game

Hương: thể dục, phim ảnh, tiếng Anh, kpop, thư giãn, thời trang

Huyền: học tập, tiếng Trung, cpop, thư giãn, du lịch

Hà: thể dục, game, tiếng Pháp, kpop, piano, trà sữa

Hùng: phượt, phim ảnh, tiếng Anh

Viết chương trình gợi ý kết bạn cho các tài khoản Facebook để gợi ý các bạn có cùng sở thích với tài khoản này. Hai tài khoản được coi là có chung sở thích nếu tham gia ít nhất 3 nhóm chung. In ra màn hình danh sách kết bạn đề xuất cho từng tài khoản.

Hướng dẫn:

Phân tích: Để thực hiện đề xuất kết bạn cho tất cả các tài khoản Facebook chúng ta cần duyệt toàn bộ các tài khoản Facebook, với mỗi tài khoản, kiểm tra sở nhóm chung với tất cả các tài khoản Facebook còn lại, nếu có trên 3 nhóm chung thì đưa vào danh sách đề xuất kết bạn.

Bài toán đề xuất kết bạn có thể được thực hiện như sau:

ketban.py

1   def nhomchung(A, B):                  # tính số phần tử chung có trong danh hai danh sách

2          kq = 0       

3          for i in range(len(A)):

4               if A[i] in B:

5                  kq = kq + 1

6           return kq

7   

8    input_file = open("group_fb.inp", encoding = "utf-8")

9    ten_fb = []

10  group_fb = []

11  for line in input_file.readlines():

12        ten, group = line.split(":")

13        ten_fb.append(ten)

14        group = group.strip().split(",")

15        for i in range(len (group)):

16             group[i] = group[i].strip()

17        group_fb.append (group)

18    print("Danh sách đề xuất kết bạn cho các tài khoản như sau:")

19    for i in range(len(ten_fb)):

20          dexuat = []

21         for j in range(len(ten_fb)):

22              if  i!=j:           # không đề xuất kết bạn với chính mình

23                  if  nhomchung(group_fb[i],group_fb[j]) >= 3:

24                         dexuat.append(ten_fb[j])

25        print("Đề xuất kết bạn cho", ten_fb[i],"là:",dexuat) 

LUYỆN TẬP

Sửa chương trình trong Nhiệm vụ 1 để in ra được danh sách bạn chung của hai tài khoản.

VẬN DỤNG

1. Trong bài toán đề xuất danh sách kết bạn, không tìm thấy đối tượng phù hợp cho hai bạn Hà, Hùng. Hãy viết chương trình tìm nhóm gợi ý cho một bạn bất kì (được nhập vào từ bàn phím). Nhóm được gợi ý là nhóm các bạn này chưa tham gia và đang có nhiều thành viên nhất.

2. Viết chương trình để tìm ra hai bạn có nhiều bạn chung nhất, hai bạn có nhiều nhóm chung nhất.

Xem và tải xuống trọn bộ sách giáo khoa Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính)

Tổng số đánh giá:

Xếp hạng: / 5 sao

Sách giáo khoa liên quan

Ngữ Văn 11 - Tập Một

Ngữ Văn Lớp 11 (Tập 1) Chương Trình Cơ Bản

Công Nghệ 11

Công nghệ 11 - NXB Giáo Dục

Địa Lí 11

Địa Lí 11 - NXB Giáo dục

Địa Lí 11 (Nâng Cao)

Địa Lí 11 Nâng cao - NXB Giáo dục

Lịch Sử 11

Lịch sử 11 - NXB Giáo Dục

Sinh Học 11

Sinh học 11 - NXB Giáo dục

Giải bài tập Toán 11 Tập 1

Giải bài tập Toán lớp 11 - Tập 1

Giải bài tập Vật lý 11

Giải bài tập Vật lý 11

Giải bài tập Sinh học 11

Giải bài tập Sinh học 11

Gợi ý cho bạn

giao-duc-cong-dan-6-120

Giáo Dục Công Dân 6

Sách Cánh Diều Lớp 6

hoat-dong-trai-nghiem-3-1082

Hoạt Động Trải Nghiệm 3

Sách Lớp 3 Kết Nối Tri Thức

ngu-van-6-tap-1-113

Ngữ Văn 6 - Tập 1

Sách Chân Trời Sáng Tạo Lớp 6

giao-duc-cong-dan-9-1807

Giáo dục công dân 9

Sách Lớp 9 Kết Nối Tri Thức

ngu-van-10-tap-2-3401

Ngữ văn 10 - Tập 2

Ngữ văn 10 - Tập 2

Nhà xuất bản

canh-dieu-1

Cánh Diều

Bộ sách giáo khoa của Nhà xuất bản Cánh Diều

chan-troi-sang-tao-2

Chân Trời Sáng Tạo

Bộ sách giáo khoa của Nhà xuất bản Chân Trời Sáng Tạo

ket-noi-tri-thuc-voi-cuoc-song-3

Kết Nối Tri Thức Với Cuộc Sống

Sách giáo khoa của nhà xuất bản Kết Nối Tri Thức Với Cuộc Sống

giao-duc-viet-nam-5

Giáo Dục Việt Nam

Bộ Sách Giáo Khoa của Nhà Xuất Bản Giáo Dục Việt Nam

sach-bai-giai-6

Sách Bài Giải

Bài giải cho các sách giáo khoa, sách bài tập

sach-bai-tap-7

Sách Bài Tập

Sách bài tập tất cả các khối lớp

tai-lieu-hoc-tap-9

Tài liệu học tập

Đây là tài liệu tham khảo hỗ trợ trong quá trình học tập

global-success-bo-giao-duc-dao-tao-11

Global Success & Bộ Giáo Dục - Đào Tạo

Bộ sách Global Success & Bộ Giáo Dục - Đào Tạo là sự kết hợp giữa ngôn ngữ Tiếng Anh theo lối giảng dạy truyền thống và cập nhật những phương thức quốc tế

nxb-dai-hoc-su-pham-tphcm-12

NXB - Đại Học Sư Phạm TPHCM

NXB - Đại Học Sư Phạm TPHCM

Chủ đề

Lấy Code