Showing posts with label Tin học. Show all posts
Ma Trận Kề [Lý thuyết đồ thị]
Ma Trận Kề
Khái niệm
- Xét đồ thị G=(X, U) (có hướng hay vô hướng)
- Giả sử tập X gồm n đỉnh và được sắp thứ tự X={
}, tập U gồm n cạnh và được sắp thứ tự U={
}
Quy tắc
Ma trận kề của đồ thị G, ký hiệu B(G), là một ma trận nhị phân cấp n x n được định nghĩa như sau: B=(
) với:

- B=(
= 1 nếu có cạnh nối
tới
- B=(
= 0 nếu không có cạnh nối
tới
Nếu G là đồ thị vô hướng, ma trận liên thuộc của đồ thị G, ký hiệu A(G), là ma trận nhị phân cấp nxm được định nghĩa như sau: A=(
)

- A=(
) = 1 nếu có cạnh nối
tới
- A=(
) = 0 nếu không có cạnh nối
tới
Code Ma trận kề
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GraphUtility;
namespace Bai_1
{
class Program
{
//Input
int[,] a; //ma tran ke
int n,m; //so dinh,dinh can tim
public void nhap()
{
NumbersFile f = new NumbersFile("MaTranKe.INP");
f.ReadNumber(out n);
f.ReadNumber(out m);
a=new int[n,n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
f.ReadNumber(out a[i, j]);
}
}
}
public void xuat()
{
Console.WriteLine(n +" "+ m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(a[i, j]+" ");
Console.WriteLine();
}
}
static void Main(string[] args)
{
Program g = new Program();
g.nhap();
g.xuat();
}
}
}
Note: khi sử dụng using GraphUtility; bạn phải tạo class GraphUtility.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
namespace GraphUtility
{
class NumbersFile
{
StreamReader sr;
public NumbersFile(string fileName)
{
sr = new StreamReader(fileName);
}
// Đọc 1 dòng trong file
public string ReadLine()
{
string s;
s = sr.ReadLine();
return s;
}
// Tách thành các từ
public string[] ReadWords()
{
Regex r = new Regex(@"\s+");
string[] words;
string s;
s = sr.ReadLine();
words = r.Split(s);
return words;
}
// Đọc 1 số nguyên
string[] words;
int index;
public bool ReadNumber(out int num)
{
if (words == null || index == words.Length)
{
words = ReadWords();
index = 0;
}
num=0;
if (int.TryParse(words[index], out num) == false)
return false;
index++;
return true;
}
}
}
Cho đồ thị G vô hướng (7 đỉnh):
- Gọi A là ma trận kề biểu diễn đồ thị G.
- Từ đồ thị G, ta thấy:
- 1 và 2 có cạnh nối =>
- 1 và 4 có cạnh nối =>
- 1 và 6 có cạnh nối =>
- 2 và 3 có cạnh nối =>
- 2 và 6 có cạnh nối =>
- 3 và 4 có cạnh nối =>
- 3 và 5 có cạnh nối =>
- 3 và 7 có cạnh nối =>
- 4 và 6 có cạnh nối =>
- 4 và 5 có cạnh nối =>
- 5 và 6 có cạnh nối =>
- Còn lại các cặp đỉnh không có cạnh nối với nhau =>
=
= 0
- 1 và 2 có cạnh nối =>
- Kết quả sau khi biểu diễn đồ thị G sang ma trận kề:
ĐỀ THI VÀ GIẢI ĐỀ MÔN - CHUYÊN ĐỀ ORACLE
Nội
dung đề thi
1.
Hãy nêu ra các đặc trưng của hệ quản
trị Oracle XEM TÀI LIỆU
2.
Hãy cho biết một PS/SQL Package gồm
mấy phần , đó là các phần nào? Hãy mô tả chi tiết mỗi phần đó XEM TÀI LIỆU
3.
Hãy sử dụng hàm(Stored Function) với
tham số truyền vào là ngày công làm việc (Ngày Công) với mô tả sau:
Create
or Replace Function F_Xeploai
(
NgayCong Number
)Return
Char
Is
Begin
???
End
F_XepLoai;
Yêu
cầu: Viết hoàn chỉnh hàm (Stored Function) trên với các
công việc sau:
Xếp loại cho nhân viên dựa vào các tiêu
chuẩn sau:
“Loại A” nếu Ngày Công > =
27
“Loại B” nếu
Ngày Công > = 25
“Loại C” nếu
Ngày Công > = 23
“Loại D” còn
lại
CREATE OR REPLACE FUNCTION F_XEPLOAI
(
NGAYCONG
NUMBER
)RETURN CHAR
IS
BEGIN
CASE
WHEN NGAYCONG >=27
THEN RETURN ‘LOẠI A’;
WHEN NGAYCONG >=25
THEN RETURN ‘LOẠI B’;
WHEN NGAYCONG >=23 THEN RETURN ‘LOẠI C’;
ELSE RETURN ‘LOẠI D’;
END CASE;
END F_XEPLOAI;
Sau
đó cho biết cách gọi thực thi hàm(Store Function ) vừa viết ở trên
SET SERVER OUTPUT ON
BEGIN
DBMS_OUPUT.PUT_LINE(F_XEPLOAI(30));
END;
4.
Tạo một Store Procedure quản lý mảng
một chiều trong đó có các tham số trả ra
là Mảng chứa các số nguyên tố (MangNT), giá trị nhỏ(Min) và lớn (Max) nhất có
trong mảng với mô tả như sau:
Create
Or Replace Type Mang Is VARRAY (100) Of
Number –tạo mảng
Create
Or Replace Procedure P_Out
(
MangNT Out Mang,
Max Out Number,
Min Out Number
)Is
Begin
???
End
P_Out;
Yêu
cầu: Viết
hoàn chỉnh thủ tục (Stored Procedure ) trên để thực hiện các công việc sau
a.Phát
sinh mảng một chiều với các số ngẫu nhiên nằm [1-100]
b.Xuất
các giá trị trong mảng
c.Tìm
giá trị lớn nhất và giá trị nhỏ nhất trong mảng
d.Trả
ra mảng chứa các số nguyên tố
CREATE OR REPLACE PROCEDURE P_OUT
(
MANGNT
OUT MANG,
MIN
OUT NUMBER,
MAX
OUT NUMBER
)IS TYPE MANG IS VARRAY(100) OF NUMBER;
BEGIN
a.Phát sinh mảng một chiều với các số ngẫu nhiên nằm [1-100]
FOR I IN 1..100
LOOP
MANG(I):=
ROUND(DBMS_RANDOM.VALUE(1,100),0);
END LOOP;
b.Xuất các giá trị trong mảng
FOR I IN
MANG.FIRST..MANG.LAST
LOOP
DBMS_OUTPUT.PUT_LINE(MANG(I));
EBD LOOP;
c.Tìm giá trị lớn nhất và giá trị nhỏ nhất trong mảng
MIN := MANG(0);
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF MANG(I) > MIN
THEN
MIN := A(I);
END IF;
END LOOP;
MAX := MANG(0);
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF MANG(I) < MAX
THEN
MAX := MANG(I);
END IF;
END LOOP;
d.Trả ra mảng chứa các số nguyên tố
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF
MOD(MANG(I),1):=0
||MOD(MANG(I),MANG(I)):=0 THEN
DBMS_OUTPUT.PUT_LINE(MANG(I));
END IF;
END LOOP;
END P_OUT;
Sau
đó cho biết cách thực thi hàm (Stored Procedure) vừa viết ở trên
EXEC P_OUT;
5. Giả sử ta có 3 bảng
SINHVIEN(MSSV,HOTEN,NGAYSINH,PHAI,MSLOP)
Mô
tả: Mỗi
sinh viên có một mã số(MSSV), họ tên , ngày sinh , phái và lớp của mình học
SINHVIEN_DETAI(MSSV,MSDT)
Mô
tả:Mỗi
sinh viên có mã số(MSSV) và mã số đề tài mình làm (MSDT)
DETAI(MSDT,TENDT,SOSV)
Mô
tả:Mỗi
đề tài có một mã số đề tài(MSDT) , tên đề tài(TENDT), và số sinh viên thực hiện
đề tài
Ta có phần mô tả Stored
Procedure như sau:
Create
Or Replace Procedure P_Cursor
Is
Begin
???
End
P_Cursor
Yêu
cầu:Viết
hoàn chỉnh thủ tục (Stored Procedure) trên để thực hiện các công việc sau:
Dùng
cơ chế Cursor tính cho việc SOSV cùng thực hiện đề tài trong table DETAI dựa
vào table SINHVIEN_DETAI
CREATE OR
REPLACE PROCEDURE P_CURSOR
IS
CURSOR CS IS
SELECT * FROM SINHVIEN_DETAI;
DEM INT;
BEGIN
FOR I IN CS
LOOP
SELECT COUNT(MSSV) INTO DEM
FROM SINHVIEN
WHERE MSSV =I.MSSV;
UPDATE DETAI
SET SOSV = DEM
WHERE MSDT = I.MSDT;
END LOOP;
END P_CURSOR;
Sau đó cho biết cách thực thi thủ tục
Stored Procedure viết ở trên
EXEC P_CURSOR;
SELECT * FROM DETAI;
Giáo án điện tử TIN HỌC CƠ BẢN
Giáo án điện tử TIN HỌC CƠ BẢN.
http://www.mediafire.com/view/?0kj0ytdkyv6bxa8
pass: giaoan
IF,
AND, OR, LEFT, RIGHT, MID
link download: http://www.mediafire.com/view/?0kj0ytdkyv6bxa8
pass: giaoan
Ôn cấu trúc dữ liệu & giải thuật
Tìm kiếm
tuyến tính:
int
linearnsearch(int a[], int N, int x)
{
int
i=o;
while((i<N)&&(a[i]==x))
i++;
if(i==N)
return -1;//không tìm thấy x: không hiểu sao lại return -1
else
return i;//tìm thấy x:không hiểu
}
Trang DBClass.cs
using System
;
using System
.
Data
;
using System
.
Configuration
;
using System
.
Linq
;
using System
.
Web
;
Bài thi oracle cơ bản
1.
Hãy sử dụng hàm(Stored Function) với
tham số truyền vào là ngày công làm việc (Ngày Công) với mô tả sau:
Create
or Replace Function F_Xeploai
(
NgayCong Number
)Return
Char
Is
Begin
???
End
F_XepLoai;