You are on page 1of 8

sinx pt bậc 2

: Khử đệ quy hệ pt
Function USCLN(a,b)
1) r := a mod b;
bắt bắt 2) while r # 0 do begin bắt
đầu đầu a:=b; b:=r; r:= a mod b đầu
end;
3) USCLN:=b;
Return nhập a1,a2,
nhập a,b,c
nhập x b1,b2,c1,c2

x:=x*3,141 D:=a1*b2-a2*b1;
đ
59/180 a=0 pt bậc 1 Dx:=c1*b1-c2*b1;
dy:=a1*c1-a2*c1;

tg:=x; s
s:=x;
delta=b*b-
i:=1 đ x:=dx/d; đưa ra
4*a*c; D!=0
y:=dy/d; x,y

tg:=(tg*(-1)*x*x)/
(2*i*(2*i+1)); s
s:=s+tg; đ pt vô
delta<0
nghiệm dx!=0 or đ đưa ra hpt
i:=i+tg;
dy!=0 vô no

s
s
s pt có
|tg|<0,0001 đ nghiệm kép: đưa ra hpt
delta=0
x=-b/(2*a) vô số no

đ s

end
đưa ra s pt có 2 nghiệm pb: vào
x1:=(-b+sqrt(delta)/(2*a);
ra
x2:=(-b-sqrt(delta)/(2*a);
{}
1.
2.if d!=0 then
end end begin x:=dx/d y:=...
pt bậc 2 else if(dx!=0)or(dy!=0)
if then begin ...
else if else write...
else
pi e mu x
bắt
đầu uscln
bắt
đầu bắt
nhập n đầu

nhập x
i:=0; nhập a,b
tg:=0;
pi:=0;
s:=1;
tg=1;
r:=a mod b;
i=0;
s
i<=n đưa ra pi i:=i+1;
tg=tg*x/i; s
r!=0 đưa ra b
s=s+tg;
đ
end đ
i:=i+1;
tg:=2*i+1; a:=b;
s |tg|<0,0001
b:=r; end
r:=a mod b;

i mod s 1)Giả mã dạng chương


pi:=pi+1/tg;
2:=0 đ trình(uscln)
-Vào: a,b
đ -Ra: USCLN(a,b)
đưa ra s {Giải thuật này tìm USCLN
pi:=pi-1/tg; của 2 số nguyên dương
a,b}
Program TimUSCLN;
1)Read(a,b);
end
2)r:=a mod b;
pi:/4:=pi+1/tg; 3)While r#0 do
1)Giả mã dạng chương begin 2)Giả mã dạng hàm
trình(e mũ x) a:=b; -Vào: a,b
2)Giã dạng hàm -Vào: x b:=r; -Ra: USCLN(a,b)
-Vào: x r:=a mod b; {Hàm này tìm và trả
-Ra: e^x
-Ra: e^x end; về USCLN của 2 số
{Hàm này nhận vào x qua đối
{Giải thuật này tính
4)Write(b); nguyên dương a, b
số, gần đúng e mũ x với End. truyền vào qua đối
tính gần đúng e mũ x với độ độchính xác 0.0001} số}
chính xác 0.0001} Program EmuX; Function USCLN(a,b)
Function TinhEmuX(x);
1)Read(x); 1)r:=a mod b;
1)s:=1;tg:=1;i:=0;
2)While r#0 do
2)Repeat 2)s:=1;tg:=1;i:=0;
begin
i := i + 1; 3)Repeat
a:=b;
tg := tg*x/i; i := i + 1; b:=r;
s := s + tg;
Until |tg|<0.0001;
tg := tg*x/i; r:=a mod b;
3)TinhEmuX := s; s := s + tg; end;
Return; Until |tg|<0.0001; 3)USCLN:=b;
Return
4)Write(s);
End.
chương 1: độ phức tạp tính toán của gt là gì, cho biết ý nghĩa của O?
trình bày các bước xđ O?

*k/n O: là cách đánh giá thời gian thực hiện giải thuật không phụ thuộc vào máy
tính và các yếu tố liên quan mà chỉ phụ thuộc vào kthước dl đầu vào
*định nghĩa: gọi n là kích thước dữ liệu đầu vào, T là thời gian thực hiện GT.
T=f(N)
hàm f(n) đgl có độ phức tạp tính toán cấp g(n), kí hiệu là f(n)=0(gn), nếu tồn tại
các hằng số c và No sao cho f(n)<=Cg(n) với n>=No, nghĩa là f(n) bị chặn trên
bởi Cg(n).
* các bước xác định O của 1 GT:
b1: xác định phép toán tích cực trong giải thuật.
b2: đếm số lần TH phép toán tích cực, biểu diễn số đếm đc thành 1 hàm phụ
thuộc vào KT DL đầu vào
b3: áp dụng định nghĩa toán học và các quy tắc để tìm ra O cuối cùng.

chương 1: giải thuật đệ quy và thủ tục đệ quy?đặc điểm, ưu và nhược?


1 đối tượng đgl đệ quy nếu nó đc định nghĩa dưới dạng chính nó
nếu lời giải của 1 bài toán T’ có dạng giống T đgl 1 lời giải đệ quy T>T’ nhưng
quy mô và kích thước nhỏ hơn
giải thuật tương ứng với lời giải đệ quy đgl giải thuật đệ quy.
thủ tục viết cho bài toán có lời giải đệ quy đgl thủ tục đệ quy.
*Hãy cho biết đặc điểm cua thủ tục đệ quy?
- Trong thủ thục đệ quy luôn có lời gọi tới chính nó, mỗi lần gọi thì khích thước
của bài toán thu nhỏ hơn và dân dần tiến tới môi trường hợp suy biến.
- Luôn luôn có lệnh IF để kiểm tra điều kiện dừng và kết thúc đệ quy.
*ưu và nhược:
ưu điểm: ngắn gọn, dễ hiểu
nhược điểm:gọi hàm nhiều lần gây tốn bộ nhớ, thời gian bởi khi thực hiện đệ
quy phải thực hiện 1 chuỗi chương trình con.
+ nếu viết giải thuật không vẩn thận về điều kiện dừng sẽ không kết thúc được đệ
quy =>> treo máy.
=>> vì nhược điểm trên thì ngta k nên dùng gt đệ quy nếu có gt khác tương
đương
trình bày ctlt phân tán của stack, vt giả mã của phép toán:
các phần tử dữ liệu được lưu trữ khắp nơi trong các ô nhớ của bộ nhớ, cấu trúc
có 2 phần là infor và link.
dùng dslk đơn trỏ bởi T thì T chính là đỉnh stack,các phép toán đều thực hiện ở
đỉnh stack.
nút dưới cùng có link=rỗng *phép loại bỏ
khi ngăn xếp rỗng thì T= rỗng -vào:t,x;
-ra: phần tử được loại bỏ
*phép toán bổ sung phần tử: {thủ tục này thực hiện việc loại bỏ
-vào: T,x; phần tử đỉnh ra khỏi ngăn xếp sử
-ra: không có dụng ctltpt}
{thủ tục này thực hiện bổ
sung phần tử x vào ngăn function pop(var t,x)
xếp T bằng ctlt phân tán} 1.{kiểm tra ngăn xếp rỗng}
procedure push(var T,x) if t=rỗng then begin
1{tạo nút mới} write(‘ngăn xếp rỗng’);
N<=avail; end;
infor(N):=x; return
link(N):= rỗng; 2{giữ lại phần tử đỉnh}
2{bổ sung vào ngăn xếp } infor(x):=tg;
link(N):=T; p:=t;
T:=N; 3{cho T trỏ xuống nút dưới}
return T:=link(T);
4.{hủy nút đỉnh và trả về phần tử
đỉnh}
P=>avail;
*kiểm tra rỗng(isEmpty),ktra
TG:=pop;
đầy(isFull),trả về p tử đỉnh(top)
return
-vào:t
-ra: true nếu ngăn xếp rỗng,false
nếu ngăn xếp không rỗng
{hàm này kiểm tra ngăn xếp có
rỗng hay không, sử dụng ctlt
phân tán}
function isEmpty(var T)
if T= rỗng then
isEmpty:= true;
else isEmpty:=false;
return
biểu diễn bằng lời
đề 64
+ ưu điểm: sd ngôn ngữ con người, không yêu cầu thuật toán phải nắm chắc
+ nhược: dài dòng, không thể hiện rõ được cấu trúc của thuật toán, đôi lúc gây nhầm
lẫn
*biểu diễn bằng lưu đồ:
+ưu: giúp theo dõi được sự phân cấp các trường hợp và quá trình xử lý của thuật toán.
thường đươc dùng trong các thuật toán có tính rắc rối
+ nhược: cồng kềnh
*biểu diễn bằng giả mã:
+ ưu: tận dụng được các khái niệm của ngôn ngữ lập trình, giúp người đọc dễ nắm
bắt đc thuật toán
+nhược: bị phụ thuộc vào ngôn ngữ lập trình đó
câu2: CTLT phân tán của đồ thị trọng số
dùng để lưu trữ danh sách kề, mỗi đỉnh của G có một danh sách tương ứng.các nút
trong danh sách i biểu diễn các đỉnh lân cận của nút i.
với đồ thị có n đỉnh thì sẽ có n danh sách kề của n đỉnh. Mỗi danh sách kề đc lưu
với 1 danh sách nút nhớ ,mỗi nút nhớ có 2 trường vertex và link.
nút cuối cùng trong danh sách nút nhớ có link= rỗng
dùng vector v có ô nhớ kế tiếp với chỉ số từ 1 đến n để chứa địa chỉ nút đầu của n
danh sách nút nhớ. địa chỉ nút đầu tiên của danh sách kề với đỉnh i được lưu trữ
trong ô nhớ V[i]
vd:
b, giả mã theo chiều sâu
procedure DFS(v)
1, write(v);{thăm đỉnh}
2, visited[v]:=1{đánh dấu đỉnh chưa thăm}
3) FOR mỗi đỉnh w lân cận với v DO
If Visited[w] = 0 then CALL DFS(w);
câu 3:
a, CTLT của dslk đơn:
dslk đơn chỉ sử dụng ctdl phân tán, ở ctdl này các phần tử dữ liệu đc lưu trữ trong
các nút nhớ. mỗi nút nhớ có ctruc gồm 2 trường: infor,link
b, giả mã loại bỏ nút cuối của dslk đơn: 2,{ngắt nút cuối của ds(gsu là m)}
-vào: f,m if m=f then f:= rỗng
-ra: không có else begin
{thủ tục này loại bỏ nút cuối của dslk đơn F} if link(M)=rỗng then
procedure SLdelete(var f,m) begin
1,{trg hợp rỗng] {tìm nút đứng trước M}
if f= rỗng then begin p:=f;
while link(p)!=m do p:=link(p);
write(’danh sach rong’);
{nối nút trước m thành null}
return
-link(p):=rỗng;
end;
end;
3, {hủy nút}m<=avail;
return
câu 4
a, ý tưởng vun đống
- Một lá coi như cây con là một đống.
- Thuật toán tiến hành từ đáy lên: Chuyển đổi thành đống
cho một cây con mà cây con trái và cây con phải của gốc đã
là một đống.
Cây nhị phân hoàn chỉnh có n nút thì với chỉ số [n/2] trở lên
có thể là nút cha: [n/2], [n/2 ]-1, . . . , 1.
B,giống:
Cả hai giải thuật đều sử dụng kỹ thuật chia để trị để tìm kiếm giá trị cần tìm.
Độ phức tạp thời gian của cả hai giải thuật đều là O(log n), trong đó n là số
phần tử của mảng hoặc cây.
Cả hai giải thuật đều có thể tìm kiếm giá trị trong mảng hoặc cây có thứ tự.

Khác nhau:
Mảng:
Là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử được lưu trữ liên tiếp trong bộ nhớ.
Độ phức tạp không gian của giải thuật tìm kiếm nhị phân trên mảng là O(1).
Giải thuật tìm kiếm nhị phân trên mảng chỉ có thể tìm kiếm giá trị trong mảng có thứ tự.
Cây:
Là một cấu trúc dữ liệu phi tuyến tính, trong đó các phần tử được liên kết với nhau theo một
mối quan hệ cha-con.
Độ phức tạp không gian của giải thuật tìm kiếm nhị phân trên cây là O(log n), trong đó n là số
nút của cây.
Giải thuật tìm kiếm nhị phân trên cây có thể tìm kiếm giá trị trong cây có thứ tự hoặc không
thứ tự.

giả mã tìm kiếm nhị phân trên cây và giả mã tạo cây nhị phân tìm kiếm
• Viết giả mã BST

Procedure createBST(Var T; k, n)
For i:=1 to n do BST(T, k[i]);
Return
Ví dụ: Áp dụng vẽ cây nhị phân cho dãy
khóa sau: 8 10 19 3 21 7 5 12

• Viết giả mã tìm kiếm nhị phân trên cây


đề 66
câu 1:
Các tính chất của gt:
- Tính thực hiện được: các thao tác phép toán trong gt là các thao tác, phép toán mà
máy tính thực hiện được
- Tính kthuc: Gt phải kthuc sau khi thực hiện một số bước hữu hạn
- Tính kết quả: phải có kết quả mong muốn sau khi kết thúc
- Tính hiệu quả:
+) tiết kiệm thời gian và bộ nhớ của máy
+) thời gian bộ nhớ càng ít càng hiệu quả
- Tính duy nhất: cùng một dl đầu vào thì người hay máy, máy này máy kia thực hiện đều
ra cùng một kết quả duy nhất
- Tính tổng quát: phải áp dụng cho mọi bài toán cùng loại và xử lý được mọi tình huống
liên quan
- Tính hình thức (máy móc): phải thực hiện đúng không được thay đổi hoặc suy diễn
câu 2:
a, ctlt phân tán của cây nhị phân
-mỗi nút của cây được lưu trữ trong 1 nút nhớ ctruc gồm 3 trường:
|LPTR|INFOR|RPTR|
-nút không có con trái,con phải thì con trỏ left,right = rỗng
-dùng con trỏ t vào nút gốc để cho phép truy cập vào accs nút trên cây nhị phân
-khi cây nhị phân rỗng T:= rỗng
b, vẽ cây
câu 3:
giả mã: a, pp chung khi thay đổi lk trong ctlt pt:
procedure postOder(T) -luôn xét trg hợp rỗng
if T= rỗng then -xem trg hợp nào làm thay đổi biến của cấu trúc thì phải
return xét xử lý riêng, còn lại thì xử lý chung
else begin
call postOrder(Lptr(T));
call postOrder(ptr(T));
write(infor(T));
return
câu 4:
ý tưởng
– So sánh các cặp khóa liền kề gối nhau từ phải qua trái, nếu
khóa đứng sau nhỏ hơn khóa đứng trước thì đổi chỗ khóa đứng
sau với khóa đứng trước. Kết quả lần thứ nhất, khóa nhỏ nhất
của dãy được đẩy lên vị trí 1 (gọi là khá được sắp).
– Tiếp tục so sánh và đổi chỗ các cặp khóa liền kề của dãy
chưa sắp, lần thứ 2 ta được khóa nhỏ nhất của dãy chưa
sắp được đưa về vị trí 2.
– Cứ tiếp tục làm tương tự như trên cho đến khi dãy chưa
sắp chỉ còn 1 phần tử.
giả mã
Procedure bubbleSort(a,n)
For i:= 1 to n-1 Do
For j:= n downto i+1 Do
If a[j]<a[j-1] then
a[j] <-> a[j-1];
Return

b,kn cây nhị phân tìm kiếm


* Cây nhị phân tìm kiếm ứng với n khoá k1, k2, ..., knlà một cây
nhị phân mà mỗi nút của nó đều được định danh bởi một khoá nào
đó trong các khoá đã cho. Đối với mọi nút trên cây tính chất sau
đây
luôn được thoả mãn:
- Mọi khoá thuộc cây con trái của một nút đều nhỏ hơn khoá ứng
với nút đó.
- Mọi khoá thuộc cây con phải của một nút đều lớn hơn khoá ứng
với nút đó.

ý tưởng:

You might also like