Nghiên cứu /nghien-cuu Sat, 26 Apr 2025 15:36:35 +0000 Joomla! - Open Source Content Management vi-vn webmaster@htu.edu.vn (Khoa Kỹ thuật - Công nghệ) Định nghĩa toán tử trên lớp /nghien-cuu/80-%C4%91%E1%BB%8Bnh-ngh%C4%A9a-to%C3%A1n-t%E1%BB%AD-tr%C3%AAn-l%E1%BB%9Bp /nghien-cuu/80-%C4%91%E1%BB%8Bnh-ngh%C4%A9a-to%C3%A1n-t%E1%BB%AD-tr%C3%AAn-l%E1%BB%9Bp

Trong ngôn ngữ lập trình C++ để thực hiện các phép toán +, -, *, / của các cấu trức dữ liệu toán học như int, double, float, … được thực hiện một cách bình thường. Đối với cấu trúc phân số hoặc số phức thì ta phải viết hàm để thực hiện các phép toán đó.

Ví dụ hàm cộng và trừ 2 phân số:

struct PS {

int ts, ms;};

PS cong(PS x, PS y){

  PS temp;

  temp.ts = x.ts*y.ms + x.ms*y.ts;

  temp.ms = x.ms*y.ms;

  return temp;}

PS tru(PS x, PS y){

  PS temp;

  temp.ts = x.ts*y.ms - x.ms*y.ts;

  temp.ms = x.ms*y.ms;

  return temp;}

Giả sử cần tính giá trị của các biểu thức:

s1 = a + b - c;

Với a, b, c  là các phân số thì ta phải viết:

s1 = tru(cong(a,b),c);

Rõ ràng cách gọi như vậy là không trực quan bằng cách viết trực tiếp công thức trong khi lập trình. Hơn nữa khi ta có một biểu thức phức tạp hơn, nếu viết bằng lời gọi hàm như cộng, trừ, đảo dấu quả là phức tạp. Để khắc phục điều này trong C++ định nghĩa chồng các toán tử.

PS operator +(PS x, PS y){

  PS temp;

  temp.ts = x.ts*y.ms + x.ms*y.ts;

  temp.ms = x.ms*y.ms;

  return temp;}

PS operator -(PS x, PS y){

  PS temp;

  temp.ts = x.ts*y.ms - x.ms*y.ts;

  temp.ms = x.ms*y.ms;

  return temp;}

Khi đó s1= a+b-c;

1. Hàm toán tử là hàm thành phần

Hàm toán tử thành phần có một tham số ngầm định là đối tượng gọi hàm nên chỉ có một tham số tường minh.

Ví dụ: hàm cộng 2 phân số

// hamf operator + dinh nghia phep toan + hai ngoi tren lop so phuc complex

      phanso  operator+(phanso b){

           phanso c;

           c.ts=ts*b.ms+ms*b.ts;

           c.ms=ms*b.ms;

           return c;

      }

  

chỉ thị: c=a+b;

trong chương trình trên được chương trình dịch hiểu là:

c=a.opertor+(b);

Nhận xét:

1. Cách viết a+b chỉ là một quy ước của chương trình dịch cho phép người sử dụng viết gọn lại.

2. Hàm toán tử operator+ phải có thuộc tính public vì nếu không chương trình dịch không thể thực hiện được nó ở ngoài phạm vi lớp.

3. Trong lời gọi hàm a.operator+(b), a đóng vai trò của tham số ngầm định của hàm thành phần và b là tham số tường minh. Số tham số tường minh cho hàm toán tử thành phần luôn ít hơn số ngôi của phép toán là 1 vì có một tham số ngầm định là đối tượng gọi hàm toán tử.

 4. Chương trình dịch sẽ không thể hiểu được biểu thức 3+a vì cách viết tương ứng 3.operator(a) không có ý nghĩa. Để giải quyết tình huống này ta dùng hàm bạn để định nghĩa hàm toán tử.

2. Hàm toán tử là hàm bạn

Trong trường hợp này sử dụng 2 tham số để thực hiện việc gọi định nghĩa hàm. Khi sử dụng ta phải khai báo hàm bạn trong lớp rồi mới định nghĩa toán tử khi ra khỏi lớp.

Ví dụ bài phân số:

   friend phanso operator+(phanso P1,phanso P2);

};

phanso operator +(phanso P1, phanso P2){

      phanso P;

P.ts= P1.ts*P2.ms + P1.ms * P2.ts;

P.ms = P1.ms *P2.ms;

Return P;}

Trong chương trình trên, biểu thức a+b được chương trình hiểu là lời gọi hàm thành phần a.operator+(b), trong khi đó với biểu thức 3+a, chương trình dịch sẽ thực hiện lời gọi hàm tự do operator+(3,a).

   Số tham số trong hàm toán tử tự do operator+(…) đúng bằng số ngôi của phép + mà nó định nghĩa. Trong định nghĩa của hàm toán tử tự do, tham số thứ nhất có thể có kiểu bất kỳ chứ không nhất thiết phải có kiểu lớp nào đó.

Với một hàm operator+ nào đó chỉ có thể thực hiện được phép + tương ứng giữa hai toán hạng có kểiu như đã được mô tả trong tham số hình thức, nghĩa là muốn có được phép cộng “ vạn năng” áp dụng cho mọi kiểu toán hạng ta phải định nghĩa rất nhiều hàm toán tử operator+ ( định nghĩa chồng các toán tử);

   Vấn đề bảo toán các tính chất tự nhiên của các phép toán không được c++ đề cập, mà nó phụ thuộc vào cách cài đặt cụ thể trong chương trình dịch c++ hoặc bản thân người sử dụng khi định nghĩa các hàm toán tử. Chẳng hạn, phép gán:

c=a+b;

Được chương trình dịch hiểu như là: c=a.operator+(b); trong khi đó phép gán:

 d=a+b+c;

Ngôn ngữ c++ không đưa ra diễn giải nghĩa duy nhất. Một số chương trình biên dịch sẽ tạo ra đối tượng trung gian t:

   t=a.operator+(b);

   c=t.operator+(c);

3. Khả năng và giới hạn của định nghĩa chồng toán tử

Phần lớn toán tử trong C++ đều có thể định nghĩa chồng toán tử

Ký hiệu đứng sau từ khoá operator  phải là một trong số các ký hiệu toán tử áp dụng cho các kiểu dữ liệu cơ sở, không thể dùng các ký hiệu mới. Một số toán tử không thể định nghĩa chồng ( chẳng hạn toán tử truy nhập thành phần cấu trúc  “.”, toán tử phạm vi “::”, toán tử điều kiện “?” ”) và có một số toán tử ta phải tuân theo các ràng buộc sau:

  1. Phép =,[] nhất định phải được định nghĩa như hàm thành phần của lớp.
  2. Phép << và >> dùng với cout và cin phải được định nghĩa như hàm bạn.
  3.  Hai phép toán ++ và -- có thể sử dụng theo hai cách khác nhau ứng với dạng tiền tố ++a, --b và dạng hậu tố a++,b--. điều này đòi hỏi hai hàm toán tử khác nhau.

Các toán tử được định nghĩa chồng phải bảo toàn số ngôi của chính toán tử đó theo cách hiểu thông thường. Ví dụ: có thể định nghĩa toán tử “-“ một ngôi và hai ngôi trên lớp tương ứng với phép đảo dấu ( một ngôi) và phép trừ số học ( hai ngôi) nhưng không thể định nghĩa toán tử gán một ngôi, còn c++ lại cho hai ngôi. Nếu làm vậy, chương trình dịch sẽ hiểu là tạo ra một ký hiệu phép toán mới.

Khi định nghĩa chồng toán tử, phải tuân theo nguyên tắc là một trong số các toán hạng phải là đối tượng. Nói cách khác, hàm toán tử phải:

  1. Hoặc là hàm thành phần, khi đó , hàm đã có một tham số ngầm định có kiểu lớp chính là đối tượng gọi hàm. tham số ngầm định này đóng vai trò toán hạng đầu tiên ( đối với phép toán hai ngôi) hay toán hạng duy nhất ( đối với phép toán 2 ngôi). Do vậy, nếu toán tử là một ngôi thì hàm toán tử thành phần sẽ không chứa một tham số  thì hàm toán tử thành phần sẽ không chứa một tham số nào khác. Ngược lại khi toán tử là hai ngôi, hàm sẽ có thêm một đối số tường minh.

 (ii)  Hoặc là một hàm tự do. Trong trường hợp này, ít nhất tham số thứ nhất hoặc tham số thứ hai phải có kiểu lớp.

Hơn nữa, mỗi hàm toán tử chỉ có thể áp dụng với kiểu toán hạng nhất định, cần chú ý rằng các tính chất vốn có, chẳng hạn tính giao hoàn của toán tử không thể áp dụng một cách tuỳ tiện cho các toán tử được định nghĩa chồng.

Ví dụ:

   a+3.5

               khác với 3.5+a;

Cần lưu ý rằng không nên định nghĩa những hàm toán tử khác nhau cùng làm những công việc giống nhau vì dễ xảy ra nhập nhằng. Chẳng hạn, đã có một hàm operator+ là một hàm thành phần có tham số là đối tượng complex (số phức) thì không được định nghĩa thêm một hàm operator+ là một hàm tự do có 2 tham số là đối tượng complex.

]]>
hien.nguyenthi@htu.edu.vn (Trần Thị Hương, Khoa Kỹ thuật – Công nghệ) Nghiên cứu Thu, 15 Oct 2015 07:00:24 +0000
Định dạng tập tin DEX /nghien-cuu/57-%C4%91%E1%BB%8Bnh-d%E1%BA%A1ng-t%E1%BA%ADp-tin-dex /nghien-cuu/57-%C4%91%E1%BB%8Bnh-d%E1%BA%A1ng-t%E1%BA%ADp-tin-dex Ngày nay có nhiều thiết bị Android được sản xuất và kéo theo đó là số lượng người dùng hệ điều hành này cũng tăng lên. Trong đó có bạn đã quen thuộc với Android ngay từ những ngày đầu phát triển, có bạn thì mới làm quen với Android sau này. Bài viết sẽ trình bày thuật ngữ định dạng tập tin và biên dịch tập tin trong hệ điều hành Android.

]]>
itc@htu.edu.vn (Tác giả: Ngô Thị Kiều Hằng) Nghiên cứu Tue, 20 Jan 2015 00:57:39 +0000
Điều thú vị khi thực hiện một đề tài nghiên cứu khoa học! /nghien-cuu/32-%C4%91i%E1%BB%81u-th%C3%BA-v%E1%BB%8B-khi-th%E1%BB%B1c-hi%E1%BB%87n-m%E1%BB%99t-%C4%91%E1%BB%81-t%C3%A0i-nghi%C3%AAn-c%E1%BB%A9u-khoa-h%E1%BB%8Dc /nghien-cuu/32-%C4%91i%E1%BB%81u-th%C3%BA-v%E1%BB%8B-khi-th%E1%BB%B1c-hi%E1%BB%87n-m%E1%BB%99t-%C4%91%E1%BB%81-t%C3%A0i-nghi%C3%AAn-c%E1%BB%A9u-khoa-h%E1%BB%8Dc Có rất nhiều điều thú vị khi thực hiện một đề tài nghiên cứu khoa học mà chúng ta có thể kể  tới như: vận dụng các kiến thức được học sát thực tế hơn, đặt bản thân vào các tình huống cụ thể, các vướng mắc thường gặp trong cuộc sống có liên quan đến đề tài đang xây dựng. Sinh viên cần nhớ lại các kiến thức đã học, tìm nhiều nguồn tài liệu khác nhau, đi sâu vào vấn đề đang nghiên cứu bằng cách phân tích, thu thập số liệu, điều tra thực tế và phát hiện ra những cái mới, cái hay trong đề tài của mình, từ đó giúp nâng cao, mở rộng thêm vốn kiến thức, mang lại những kinh nghiệm quý báu cho công việc chuyên môn sau này. Tuy nhiên, không phải ai cũng nhận thức được điều này, xuất phát từ thực tế hiện nay là có nhiều sinh viên mặc dù đã có ít nhiều ý tưởng về việc tham gia nghiên cứu khoa học nhưng vì những lý do như: mất nhiều thời gian, tốn công sức, hay sợ kiến thức không đủ để đi đến hết chặng đường nên đã không đăng ký thực hiện. Những vấn đề đó thực sự không là gì nếu sinh viên nhận thấy được giá trị và lợi ích to lớn mà nó mang lại.

Khi cùng nhau tự làm một đề tài nghiên cứu khoa học sinh viên sẽ học được cách đặt mục tiêu, xây dựng kế hoạch, phân tích dự án, phân công nhiệm vụ cho các thành viên trong nhóm, trình bày các bản báo cáo, trình chiếu … giúp hình hành nên các kỹ năng như viết nội dung cho các đề tài trong tương lai, kỹ năng tư duy logic một cách tự nhiên, làm việc theo nhóm, trình bày trước đám đông, kỹ năng lắng nghe khi người khác nhận xét về bản thân, nâng cao khả năng đối đáp, xoay sở trong các tình huống bất ngờ do giám khảo đặt ra và rất nhiều điều bổ ích khác nữa…

Sinh viên Trần Đình Lãm trong buổi thuyết trình đề tài NCKH cấp khoa

Sinh viên Trần Đình Lãm trong buổi thuyết trình đề tài NCKH cấp khoa

Mọi rào cản về việc phải hoàn thành bài tập các chương hay nhớ các bài giảng sẽ không còn, cái duy nhất khiến sinh viên phải suy nghĩ là làm sao cho đề tài của mình có thể ứng dụng được, có ích cho nhiều người, vì vậy sinh viên sẽ tích cực, chủ động  hơn trong việc lựa chọn phương pháp nghiên cứu của mình, nhìn thấy được những yêu cầu từ thực tế mà ngành nghề mình đang thiếu, từ đó điều chỉnh phương pháp học tập để lĩnh hội những kiến thức cần thiết và định hướng tốt hơn cho tương lai phía trước. Đặc biệt đối với sinh viên năm cuối, việc lựa chọn đề tài nghiên cứu khoa học gần với đề tài khóa luận tốt nghiệp sẽ là một cơ hội học hỏi đúc rút kinh nghiệm, rèn luyện bản thân, hoàn thiện các kỹ năng,có được sự chuẩn bị tốt nhất để bảo vệ thành công luận án tốt nghiệp của mình.

Việc bắt tay vào làm một đề tài nghiên cứu khoa học tất nhiên sẽ phải gặp những khó khăn, thử thách, nhưng đằng sau đó là những thành quả tuyệt vời chỉ có thể có được thông qua nghiên cứu khoa học. Là sinh viên khoa Kỹ Thuật – Công nghệ Trường Đại học Hà Tĩnh, chúng tôi cảm thấy may mắn và tự hào khi trong quá trình nghiên cứu khoa học luôn được sự quan tâm, hướng dẫn tận tình của Ban giám hiệu cũng như các thầy cô, các bạn trong Khoa. Điển hình là đề tài “Từ điển Việt Lào” của tôi và một bạn Lào trong năm học 2012 – 2013 vừa qua, chúng tôi đã đạt được những kết quả ngoài mong đợi, qua đó học hỏi được rất nhiều kiến thức chuyên môn sâu, và nhiều kinh nghiệm quý báu.

Thông qua bài viết, chúng tôi mong muốn các bạn là sinh viên Trường Đại học Hà Tĩnh hãy thật nỗ lực trong học tập hơn nữa để có nền tảng vững chắc qua đó làm hành trang tốt nhất lúc ra trường. Để có thể thu hoạch những gì tinh túy nhất của kiến thức đại học thì các bạn hãy mạnh dạn đề xuất đề tài và trực tiếp tham gia công tác nghiên cứu khoa học cũng như đề xuất các sáng kiến đổi mới nâng cao chất lượng giáo dục.  Bởi vì, bên cạnh chúng ta luôn là các giảng viên đầy tâm huyết, luôn biết lắng nghe, luôn tạo điều kiện thuận lợi cũng như đóng góp những ý kiến quý báu để chúng ta hoàn thành được mục tiêu đúng kế hoạch đề ra. Vì vậy, đừng ngần ngại khi có ý tưởng và hãy bắt tay vào làm ngay bằng tất cả nhiệt huyết và niềm đam mê của tuổi trẻ các bạn nhé...

]]>
itc@htu.edu.vn (Trần Đình Lãm - K3CNTT) Nghiên cứu Fri, 07 Nov 2014 07:02:36 +0000
Đề án mở cơ sở thực hành, phòng thí nghiệm ngành xây dựng tại trường Đại học Hà Tĩnh /nghien-cuu/28-%C4%91%E1%BB%81-%C3%A1n-m%E1%BB%9F-c%C6%A1-s%E1%BB%9F-th%E1%BB%B1c-h%C3%A0nh%2C-ph%C3%B2ng-th%C3%AD-nghi%E1%BB%87m-ng%C3%A0nh-x%C3%A2y-d%E1%BB%B1ng-t%E1%BA%A1i-tr%C6%B0%E1%BB%9Dng-%C4%91%E1%BA%A1i-h%E1%BB%8Dc-h%C3%A0-t%C4%A9nh /nghien-cuu/28-%C4%91%E1%BB%81-%C3%A1n-m%E1%BB%9F-c%C6%A1-s%E1%BB%9F-th%E1%BB%B1c-h%C3%A0nh%2C-ph%C3%B2ng-th%C3%AD-nghi%E1%BB%87m-ng%C3%A0nh-x%C3%A2y-d%E1%BB%B1ng-t%E1%BA%A1i-tr%C6%B0%E1%BB%9Dng-%C4%91%E1%BA%A1i-h%E1%BB%8Dc-h%C3%A0-t%C4%A9nh

Với mục tiêu xây dựng trường Đại học Hà Tĩnh thành Trung tâm đào tạo đại học, nghiên cứu khoa học và chuyển giao công nghệ của tỉnh và khu vực, đạt trình độ tương đương các trường đại học lớn của Việt Nam, tỉnh Hà Tĩnh đã tập trung đầu tư cho việc xây dựng, phát triển đội ngũ cán bộ, giảng viên, mở rộng qui mô, ngành nghề đào tạo, xây dựng cơ sở vật chất phục vụ đào tạo và nghiên cứu khoa học, đẩy mạnh hoạt động hợp tác quốc tế, qua đó nâng cao chất lượng đào tạo nguồn nhân lực.

Để xây dựng nền công nghiệp hóa hiện đại hóa đất nước thì nguồn nhân lực về kỹ thuật công nghệ là một trong những yếu tố then chốt. Chính vì vậy, việc tập trung xây dựng và phát triển khoa Kỹ thuật- Công nghệ là một hướng đi của trường Đại học Hà Tĩnh trong thời gian tới nhằm phát triển và mở rộng qui mô đào tạo các ngành kỹ thuật, công nghệ, đáp ứng yêu cầu cung cấp nguồn nhân lực có chất lượng cao, phục vụ cho sự nghiệp công nghiệp hóa hiện đại hóa đất nước nói chung và cho Hà Tĩnh nói riêng. Để làm được việc đó thì song song với việc tập trung xây dựng đội ngũ cán bộ giảng viên thì việc đầu tư xây dựng cơ sở vật chất kỹ thuật đặc biệt là hệ thống các phòng thí nghiệm, xưởng thực hành là một việc hết sức cần thiết và cấp bách.

]]>
itc@htu.edu.vn ( TS. Nguyễn Sỹ Minh) Nghiên cứu Fri, 07 Nov 2014 06:42:43 +0000
Lý thuyết giao thức định tuyến theo thông tin vị trí địa lý /nghien-cuu/27-l%C3%BD-thuy%E1%BA%BFt-giao-th%E1%BB%A9c-%C4%91%E1%BB%8Bnh-tuy%E1%BA%BFn-theo-th%C3%B4ng-tin-v%E1%BB%8B-tr%C3%AD-%C4%91%E1%BB%8Ba-l%C3%BD /nghien-cuu/27-l%C3%BD-thuy%E1%BA%BFt-giao-th%E1%BB%A9c-%C4%91%E1%BB%8Bnh-tuy%E1%BA%BFn-theo-th%C3%B4ng-tin-v%E1%BB%8B-tr%C3%AD-%C4%91%E1%BB%8Ba-l%C3%BD Với sự phát triển ngày càng nhanh của các hệ thống mạng máy tính không dây, MANET, Wireless Network, Ad hoc network, Sensor network… đã dẫn tới việc phát triển các thuật toán về định tuyến gói tin (quyết định đường đi cho một gói tin trên mạng máy tính) cho mạng máy tính không dây. Bài viết này mong muốn giới thiệu khái quát về giao thức định tuyến theo thông tin địa lý, chiến lược định tuyến tham lam, và trình bày cách thức tạo một đồ thị phẳng để định tuyến gói tin theo quy tắc bàn tay phải.

Định tuyến không dây theo thông tin vị trí địa lý

Geographic routing protocol (GPRP) là những giao thức định tuyến dùng thông tin vị trí địa lý của các thiết bị trong hệ thống mạng để quyết định đường đi của các gói tin trong mạng. Không giống như những thuật toán định tuyến theo cấu trúc mạng ( như mạng có dây)GPRP không cần phải duy trì thông tin bảng định tuyến (Routing table) mà  sử dụng thông tin vị trí địa lý để định tuyến cho mạng không dây. Rất nhiều thuật toán Geographic routing sử dụng chiến lược tham lam  nhằm cố gắng tiếp cận tới vị trí đích trong mỗi bước chuyển tiếp, ví dụ tại mỗi bước GPRP chọn nút hàng xóm gần nhất với nút đích. Tuy nhiên, chiến lược trong trường hợp có quá ít các nút trong phạm vi định tuyến (void area) chiến lược tham lam sẽ thất bại.

Định tuyến theo thông tin địa lý (gọi là định tuyến vị trí cơ bản hay định tuyến theo hình học: Đó là công nghệ chuyển tiếp những gói tin tới một nút cùng  mạng thông qua  nút trung gian bởi thông tin chính là thông tin vị trí địa lý. Quyết định chuyển tiếp gói tin không được xây dựng từ địa chỉ mạng (IP) và bảng định tuyến chứa thông tin để định tuyến về phía vị trí đích. Cùng với những hiểu biết về thông tin địa lý nút kề (hàng xóm). Mỗi một nút có thể chọn một nút kế bên nó gần với nút đích nhất. Các nút sẽ chuyển tiếp thông tin tới nút đích qua mỗi bước, thực chất nó không có bảng định tuyến, cũng không có những route tìm kiếm. Trong định tuyến địa lý, việc cần thiết là xây dựng thông tin vị trí địa lý cho các nút của mạng di động như mạng không dây, mạng ad hoc, mạng cảm biến. Những mạng nêu trên, nếusử dụng định tuyến truyền thống cần phải xây dựng và bảo trì thông tin bảng định tuyến rất tốn kém. Định tuyến truyền thống luôn gọi những thông tin truyền tải và yêu cầu năng lượng cũng như băng thông và thường xuyên phải cập nhật bảng định tuyến với những kịch bản luôn thay đổiCấu trúc mạng thay đổi. Ngược lại, trong những thuật toán Greographic làm việc với những trạng thái luôn thay đổi và cung cấp những thông tin chuyển chuyển tiếp trong mạng với vị trí luôn thay đổi của các thiết bị mạng. Tất cả những thuật toán về Geographic đều tuân theo nhưng yêu cầu sau:

-  Trong một hệ thống mạng không dây một nút có thể xác định thông tin vị trí địa lý các nút cùng mạng.

-  Một nút có thể biết vị trí của nút hàng xóm.

-  Phải biết được vị trí của nút đích trước khi chuyển tiếp thông tin.

Cùng với hệ thống định vị thông tin toàn cầu (GPS) hoặc những hệ thống vệ tinh dò tìm chuyển hướng cơ bản, thông tin về vị trí của những thiết bị rất nhỏ có thể được dễ dàng xác định. Thêm vào đó, hệ thống vị trí địa lý cho những ứng dụng trong nhà đã được phát triển từ rất sớm.

Điều kiện tiên quyết để có những giả định là phải có hệ thống định vị thông tin vị trí (GPS). Nếu nó sẵn sàng thì định tuyến theo thông tin vị trí sẽ hỗ trợ một cách hiệu quả và mở rộng giải pháp cho định tuyến trong mạng không dây và di động. Tuy nhiên các nút luôn có giới hạn về phạm vi phát gói tin, vì vậy với một nút không có hàng xóm nào gần vị trí đích nhất thì thông tin định tuyến sẽ bị giữ. Thuật toán tham lam không giải quyết được vấn đề về khoảng cách và vấn đề vị trí tối thiểu của khoảng cách các nút. Để  giải quyết nhược điểm trên, thuật toán định tuyến phải kết hợp với định tuyến theo mặt phẳng và quy tắc định tuyến bàn tay phải.

Chiến lược định tuyến tham lam

Chiến lược định tuyến tham lam là một trong những phương pháp tiếp cận đầu tiên cho việc định tuyến Geographics, ra đời vào khoảng những năm 1980 nhằm hỗ trợ việc chuyển gói trong các mạng vô tuyến và mạng không dây. Thuật toán này giúp các nút sẽ quyết định chuyển tiếp gói tin một cách tối ưu tới đích theo khoảng cách gần nhất.

Việc lựa chọn nút tiếp theo trong chiến lược tham lam theo những điều kiện sau (xem thêm hình 1):

-  Progess (Sự tiến tới đích): Là tiêu chuẩn khoảng cách ngắn nhất của hình chiếu các nút trên trục trục đích nguồn st.

-  Khoảng cách tới đích ngắn nhất của các nút hàng xóm

-  Góc xa, góc tách: (góc tạo bởi nút nguồn - nút hàng xóm với trục nguồn đích)

-  NC (Nearest closer): Lựa chọn theo tiêu chí nút hàng xóm ngần nút nguồn nhất.

-  Greedy (Tham lam): Lựa chọn tiêu chí khoảng cách ngắn nhất từ nút đích tới các nút hàng xóm.

-  CR (Compass Routing): Lựa chọn tiêu chí góc tạo bởi nút hàng xóm, nút nguồn, nút đích là nhỏ nhất.

-  NFP (): Lựa chọn nút hàng xóm có khoảng cách hình chiếu gần nút nguồn nhất.

-  MFR (): Lựa chọn nút hàng xóm có khoảng cách hình chiếu gần nút đích nhất.

Định tuyến đồ thị phẳng và các phương pháp tạo đồ thị

Định tuyến đồ thị phẳng và chiến lược phục hồi

Cách tạo đồ thị phẳng

Thuật toán chuyển tiếp tham lam có một nhược điểm quan trọng đó là: khi số lượng các nút rất ít và không có hàng xóm nào gần với đích nhất trong mọi trường hợp thì việc định tuyến sẽ thất bại,khi đó việc định tuyến cần tới một vài thao tác đơn giản để tiếp tục định tuyến bằng chiến lược tham lam.

Định tuyến đồ thị phẳng (Planar graph routing) là một chiến lược định tuyến thông tin địa lý nó có thể chuyển tiếp gói tin qua những vùng vị trí tối thiểu (void area) của chuyển tiếp gói tin theo chiến lược tham lam. Vùng tối thiểu  tồn tại vùng biên của những vùng trống, nơi mà một nút cần chuyển tiếp gói tin không thể tìm thấy một hàng xóm nào gần với đích hơn chính nó, hay nút như vậy còn gọi là nút chết. Đồ thị phẳng là một nội dung quan trọng cho việc phục hồi từ những vấn đề vùng cục bộ tối thiểu (Local minimum),nó được xây dựng trên ý tưởng là mọi liên kết các vị trí là một mạng truyền thông phẳng và một gói tin có thể chuyển tiếp thành công qua các mặt của đồ thị. Định tuyến phụ thuộc vào mặt phẳng có nghĩa là các nút của mặt phẳng chuyển tiếp thông tin qua vùng mạng biên bằng cách áp dụng quy tắc “Bàn tay phải” hoặc “Bàn tay trái”. Quy tắc này thật sự tốt để giải quyết vấn đề vùng vị trí tối thiểu. Một nút tìm kiếm các nút khác nhằm để giải quyết vấn đề vùng trống là luôn luôn tìm kiếm theo một con đường duy nhất.

Trong một mạng máy tính không dây, các nút mạng luôn được liên kết với nhau theo một cách thức nào đó vì thế có thể dẫn tới một đồ thị chéo (đồ thị có các cạnh là các đường liên kết tới các nút mạng cắt nhau). Trong một đồ thị chéo thì việc định tuyến theo quy tắc bàn tay phải sẽ không thực hiện được, chúng ta phải chuyển các đồ thị chéo thành các đồ thị phẳng để có thể thực hiện việc định tuyến gói tin theo quy tắc bàn tay phải.

Có hai cách tiếp cận để chuyển một đồ thị chéo thành một đồ thị phẳng lồi đó là:

- Đồ thị vùng lân cận tương đối (RNG).

- Gabriel Graph (GG).

(có thể tham khảo thêm tại “Theory Geographic Routing Protocol))

Khi chuyển về đồ thị phẳng thì việc định tuyến gói tin theo mặt phẳng sẽ được áp dụng theo quy tắc bàn tay phải. Quy tắc này chỉ ra rằng tại một nút mạng gói tin sẽ luôn luôn chuyển tiếp gói tin theo một hướng cố định trái hoặc phải cho tới khi nào điều kiện áp dụng thuật toán tham lam có thể thực hiện được. Sự kết hợp của định tuyến mặt phẳng sẽ luôn là một chiến lược phục hồi hiệu quả cho việc định tuyến theo chiến lược tham lam.

Tài liệu tham khảo:

[1]: 2009, “Theory and Practice of Geographic Routing”, University of Freibug, Germany.

[2]:2000, “GPSR: Greedy Perimeter Stateless Routing for Wireless Networks”, Brad Karp and H.T.Kung, Havard University. 

]]>
itc@htu.edu.vn (Nguyễn Quốc Dũng - Khoa Kỹ thuật – Công nghệ) Nghiên cứu Fri, 07 Nov 2014 06:41:30 +0000
Giới thiệu về mã hóa khối /nghien-cuu/22-gi%E1%BB%9Bi-thi%E1%BB%87u-v%E1%BB%81-m%C3%A3-h%C3%B3a-kh%E1%BB%91i /nghien-cuu/22-gi%E1%BB%9Bi-thi%E1%BB%87u-v%E1%BB%81-m%C3%A3-h%C3%B3a-kh%E1%BB%91i Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng..., cho đến các lĩnh vực như thương mại, điện tử...Trong bài báo này, tôi giới thiệu về mã hóa khối và cụ thể là mã hóa DES, một trong những mã hóa ra đời sớm và phức tạp thuộc mã hóa khối.

1. Mã hóa khối

Các hệ mã cổ điển (ví dụ: mã hóa dịch chuyển, mã hóa thay thế, mã hóa Affine, mã hóa Vigenere, mã hóa Hill) đều có đặc điểm chung là từng ký tự của bản rõ được mã hoá tách biệt. Điều này làm cho việc phá mã trở nên dễ dàng hơn. Chính vì vậy, trên thực tế người ta hay dùng một kiểu mật mã khác, trong đó từng khối ký tự của bản rõ được mã hoá cùng một lúc như là một đơn vị mã hoá đồng nhất, gọi là phương pháp mã hóa “khối”.

Quá trình mã hóa khối bao gồm 2 thuật toán: mã hóa - ký hiệu E và giải mã - ký hiệu E-1. Cả 2 thuật toán đều tác động lên một khối đầu vào n bít sử dụng một khóa k bít để cho ra một khối đầu ra n bít. Đối với bất kỳ khóa nào, giải mã là hàm ngược của mã hóa, nghĩa là:

Trong đó M là khối thông tin và K là khóa bất kỳ.

Với mỗi khóa K, EK là một hoán vị (song ánh) của khối đầu vào. Mỗi khóa sẽ xác định một hoán vị trong tổng số 2n! khả năng.

Độ dài của khối thông tin, ký hiệu là n, thông thường là cố định ở 64 hoặc 128 bít. Một số thuật toán có độ dài khối thay đổi nhưng không phổ biến. Tính đến trước những năm giữa của thập kỷ 1990 thì độ dài 64 bít thường được sử dụng. Từ đó trở về sau thì khối 128 bít được sử dụng rộng rãi hơn. Trong các chế độ mã hóa khối thì người ta thường phải bổ sung thêm một số bít cho văn bản (tiếng Anh: padding) để văn bản chứa số nguyên lần các khối.

Hầu hết các thuật toán mã hóa khối sử dụng lặp đi lặp lại các hàm đơn giản. Mỗi chu kỳ lặp được gọi là một vòng và thông thường các thuật toán có từ 4 tới 32 vòng.

Các thành phần sử dụng trong thuật toán là các hàm toán học, các hàm lô gíc (đặc biệt là hàm XOR), hộp thế (S-box) và các phương pháp hoán vị.

2. Các loại mã hoá  “khối”

Qua thời gian thì có rất nhiều hệ mã “khối” ra đời và đã được phát triển. Có thể kể ra một số hệ mã sau: Lucifer (1969), DES (1977), Madryga (1984), 3-DES (1985)(t53), FEAL, REDOC, LOKI (1990), Khufu and Khafre (1990), RC2, RC4, IDEA (1990), MMB, CA-1.1, Shipjack, GOST, CAST, Blowfish, SAFER, AES (2001),..

3. Mã hóa DES

  1. Thuật toán

Gồm 3 bước:

Bước 1: Đưa vào văn bản gốc x, thực hiện phép hoán vị IP đầu tiên (thực chất là một lần mã hoá). Từ x 64 bit sẽ biến thành một từ mới IP(x), từ này được chia thành 2 nửa L0 và R0, mỗi nửa là một từ 32 bit.

Đặt x0 = IP(x) = L0R0, với L0 = 32 bit đầu tiên; R0 = 32 bit còn lại.

Bước 2: Từ đây, thực hiện 16 vòng mã hoá, dữ liệu được kết hợp với khoá qua hàm f theo qui tắc sau:

Li = Ri.

Ri = Li-1XOR f(Ri-1, Ki). với i = 1, 2, ..., 16, ta thu được các cặp (L1, R1), ..., (L16, R16).

trong đó XOR là phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2). f là một hàm mà ta sẽ mô tả ở sau, còn K1,K2, . . . ,K16 là các xâu bít độ dài 48 được tính như hàm của khoá K. ( trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K). K1, . . ., K16 sẽ tạo thành bảng khoá.

Bước 3: Áp dụng phép hoán vị nghịch đảo IP-1 cho xâu bít R16L16, ta thu được bản mã y. Tức là, y = IP-1(R16L16).

Z51

Z49

Ví dụ:

Bản rõ X = ABC0123456789DEF = 1010 1011 1100 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1101 1110 1111

Bước 1: Bản rõ x được hoán vị theo phép hoán vị IP, thành IP(x). IP(x) = L­­0R0

L­­0= 1011 0010 0111 1100 1101 1000 1100 0001

R0= 1100 0011 1010 1001 1110 0001 1001 0101

Bước 2: thực hiện 16 vòng mã hóa với những phép toán giống nhau. Dữ liệu được kết hợp với nhau thông qua hàm f:

Li = Ri-1, Ri = Li-1 XOR f(Ri-1, ki)

a. tính khóa con k1 (48 bit) từ khóa gốc K= 134675588BBACDD1 (64 bit)= 0001 0011 0100 0110 0111 0101 0101 1000 1000 1011 1011 1010 1100 1101 1101 0001

  • Hoán vị PC-1: Kà C0D0
  • Hoán vị PC-2: C1D1à k1
  • Mở rộng xâu R0 (32 bit) thành xâu E(R0) (48 bit), theo hàm mở rộng E:

C0= 1111 0000 1100 1110 0010 0100 1010

D0= 0011 0011 0100 0110 0111 1000 1101

C1= LS1(C0)= 1110 0001 1001 1100 0100 1001 0101

D1= LS1(D0)= 0110 0110 1000 1100 1111 0001 1010

K1= 1001 1011 0010 0010 1100 0011 1111 1110 0101 0000 1111 0000

b. Tính hàm f(R0, k1)

Theo bước 1: R0= 1100 0011 1010 1001 1110 0001 1001 0101

Hoán vị E: R0 à E(R0):

E(R0)= 1110 0000 0111 1101 0101 0011 1111 0000 0011 1100 1010 1011

Theo a):

K1=     1001 1011 0010 0010 1100 0011 1111 1110 0101 0000 1111 0000

  • Tính E(R0) XOR k1= B1 B2 B3 B4 B5 B6 B7 B8
  • Tính C thông qua hộp S

011110 110101 111110 010000 000011 100110 110001 011011

C1= S1(0, 15)= (7)10­= (0111)2

C2= S2(3, 10)= (7)10­= (0111)2

C3= S3(2, 15)= (7)10­= (0111)2

C4= S4(0, 8)  = (1)10­= (0001)2

C5= S5(1, 1)  = (11)10­= (1011)2

C6= S6(2, 3)  = (5)10­= (0101)2

C7= S7(3, 8)  = (9)10­= (1001)2

C8= S8(1, 13)= (14)10­= (1110)2

Ta nhận được xâu C= C1 C2 C3 C4 C5 C6 C7 C8 (32 bit)

C = 0111 0111 0111 0001 1011 0101 1001 1110

f(R0, k1)= P(C)= 1110 1111 0000 0011 1110 0010 1011 1111

Bước 3: Kết quả là bản mã 86934A071EECDF75

  1. Ứng dụng của DES 

DES thường được dùng để mã hoá bảo mật các thông tin trong quá trình truyền tin cũng như  lưu trữ thông tin. Một ứng dụng quan trọng khác của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống (hệ thống quản lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm tính hợp lệ của một mã số bí mật (thẻ internet, thẻ điện thoại di động trả trước), hoặc của một thẻ thông minh (thẻ tín dụng, thẻ payphone…).

4. Độ an toàn của mã hoá  “khối”

-         Độ an toàn của khối: khối phải có độ dài đủ để chống lại các phương pháp phân tích thống kê và ngăn việc một số khối nào đó xuất hiện nhiều hơn các khối khác. Mặt khác sự phức tạp của thuật toán tăng theo hàm mũ với độ dài khối. Với khối có độ dài 64 bit là đủ độ an toàn.

-         Độ dài khoá: Khoá phải có độ dài đủ để chống lại các phương pháp vét cạn khoá ( Chống khả năng thử các khoá được sinh ra từ (N)bit khoá cho trước ).

-         Độ phức tạp: Bản mã phải phụ thuộc một cách phức tạp  vào bản rõ và khoá. Mục tiêu đặt ra ở đây là phải phức tạp hoá sự phụ thuộc của bộ mặt thống kê của bản mã vào bản rõ. IDEA đạt được diều này nhờ sử dụng 3 phép toán sẽ trình bày sau đây:

-         Sự phân bố: IDEA đã đạt được việc mỗi bít của bản rõ phải có ảnh hưởng tới nhiều bit của bản mã và mỗi bit khoá cũng tác động đến nhiều bit của bản mã. Điều này làm cho cấu trúc của bản rõ sẽ bị phá vỡ trong bản mã.

Trong bài báo này, tôi đã giới thiệu về mã hóa khối, các loại mã hóa khối và độ an toàn của nó. Bên cạnh đó, bài báo này cũng đã nêu thuật toán và ví dụ cụ thể của mã hóa DES. DES là mã hóa thuộc hệ mã hóa khối.

Tài liệu tham khảo

[1] Giáo trình An toàn và bảo mật thông tin, Trường Đại học Hàng hải, 2008

[2] Nguyễn Văn Kiên, Mật mã khối và mật mã khóa đối xứng, Trường Đại học Bách khoa Hà Nội, 2008

[3] Ngô Thị Tuyết Hà, Đồ án Bảo mật thông tin, 2005

]]>
itc@htu.edu.vn ( Nguyễn Thị Duyên, Khoa Kỹ thuật - Công nghệ) Nghiên cứu Fri, 07 Nov 2014 06:10:02 +0000
Đề xuất áp dụng mô hình Tutor môn học trong khoa KT-CN /nghien-cuu/21-%C4%91%E1%BB%81-xu%E1%BA%A5t-%C3%A1p-d%E1%BB%A5ng-m%C3%B4-h%C3%ACnh-tutor-m%C3%B4n-h%E1%BB%8Dc-trong-khoa-kt-cn /nghien-cuu/21-%C4%91%E1%BB%81-xu%E1%BA%A5t-%C3%A1p-d%E1%BB%A5ng-m%C3%B4-h%C3%ACnh-tutor-m%C3%B4n-h%E1%BB%8Dc-trong-khoa-kt-cn Khái niệm Tutor môn học (hay còn gọi là trợ giảng, cố vấn môn học) rất quen thuộc, thậm chí là hiển nhiên trong các trường đại học trên thế giới. Theo đó, mỗi môn học, ngoài giảng viên chính, sẽ có từ một đến vài Tutor tham gia trợ giúp sinh viên theo học bằng các hình thức như: giải đáp thắc mắc về bài giảng, giải thích, hướng dẫn, xem xét, đánh giá, và trợ giúp sinh viên làm bài tập, thực hành, cũng như ôn thi. Ngoài giờ phụ đạo qui định bởi nhà trường, sinh viên có thể liên lạc với Tutor thông qua Email, điện thoại, hoặc gặp gỡ bất cứ lúc nào thuận tiện cho cả hai.

Trên tình hình thực tế, Khoa KT-CN là một trong những khoa có nhiều môn học chuyên ngành khó, yêu cầu về trình độ nền lẫn khả năng sử dụng tiếng Việt rất cao, trong khi phần lớn sinh viên lại đến từ nước Lào nên hiệu quả trong giảng dạy còn nhiều hạn chế. Cụ thể, các từ chuyên ngành các em sinh viên Lào thực sự chưa hiểu rõ, nên nhiều lúc không bắt kịp bài giảng. Kiến thức toán phục vụ tin học cũng dưới mặt bằng chung so với sinh viên Việt, thêm vào đó là sự e ngại, thụ động của sinh viên khiến việc dạy và học còn gặp nhiều khó khăn, vất vả.

Để nâng cao chất lượng dạy và học, cùng với các giải pháp khác, thiết nghĩ nên có sự trợ giúp học tập đối với sinh viên từ Tutor môn học. Tutor môn học có thể là sinh viên của trường hoặc giáo viên trẻ mới vào nghề. Việc tuyển chọn Tutor môn học sẽ dựa trên kết quả học tập của môn học đăng ký hướng dẫn, nhận xét của giảng viên chính và cán bộ điều phối môn học, cân nhắc thêm kỹ năng giao tiếp và truyền đạt.

Hình ảnh tutor và nhóm sinh viên (nguồn Internet)

Hình ảnh tutor và nhóm sinh viên (nguồn Internet)

Ling Chen (trái) – Bạn học, lại là Tutor môn Relational Database của tôi tại trường University of Queensland

Ling Chen (trái) – Bạn học, lại là Tutor môn Relational Database của tôi tại trường University of Queensland

Với Tutor môn học, giảng viên sẽ không cần phải dạy thật kỹ và dừng tiến độ giảng dạy trong mỗi tiết học để kèm cặp từng sinh viên yếu kém nữa. Thay vào đó, vào giờ phụ đạo và thời gian khác, Tutor môn học sẽ củng cố kiến thức và trợ giúp cụ thể đến các em. Thậm chí, với sự nhiệt tình, gần gũi, và thân thiện do cùng trang lứa, các em dễ dàng truyền tải được kiến thức và kinh nghiệm học tập cho nhau, giúp nhau tiến bộ hơn.

Mặt khác, thông qua việc hướng dẫn người khác, các sinh viên khá giỏi cũng sẽ có cơ hội rèn luyện kỹ năng và nâng cao kiến thức của mình, đồng thời vượt qua thử thách truyền đạt thông tin trước đám đông. Các em sẽ được tham gia các khóa học về các kỹ năng giao tiếp, truyền đạt (hướng dẫn, lắng nghe, thu nhận, và phản hồi thông tin). Mỗi sinh viên/giáo viên có thể làm tutor cho nhiều môn học tùy thời gian và khả năng của mình, và được thanh toán một khoản tiền theo qui định tùy đánh giá, phản hồi của sinh viên cuối môn học đó để trang trải thêm vào chi phí sinh hoạt hàng ngày.

Tôi tin rằng, mô hình Tutor môn học sẽ được nhà trường, Khoa KT-CN, giảng viên, và sinh viên Trường Đại học Hà Tĩnh đón nhận và thực hiện nhiệt tình. Đây không chỉ là cơ hội cho sinh viên mới, sinh viên yếu, sinh viên nước ngoài có thêm sự trợ giúp ngoài sách vở, thầy cô, mà còn là cơ hội giúp đỡ các sinh viên khá giỏi có hoàn cảnh khó khăn có thêm thu nhập, rèn luyện các em trưởng thành hơn không chỉ ở sự tự tin trong cách biểu đạt và truyền tải, mà còn cả kỹ năng sống và cống hiến với tấm lòng yêu thương giúp đỡ lẫn nhau./.

]]>
itc@htu.edu.vn (Hồ Lê Phương Thảo – Khoa Kỹ thuật – Công nghệ) Nghiên cứu Fri, 07 Nov 2014 06:08:25 +0000
Hội thảo “Quản lý rủi ro trong các siêu dự án” /nghien-cuu/15-h%E1%BB%99i-th%E1%BA%A3o-%E2%80%9Cqu%E1%BA%A3n-l%C3%BD-r%E1%BB%A7i-ro-trong-c%C3%A1c-si%C3%AAu-d%E1%BB%B1-%C3%A1n%E2%80%9D /nghien-cuu/15-h%E1%BB%99i-th%E1%BA%A3o-%E2%80%9Cqu%E1%BA%A3n-l%C3%BD-r%E1%BB%A7i-ro-trong-c%C3%A1c-si%C3%AAu-d%E1%BB%B1-%C3%A1n%E2%80%9D Ngày 25/4/2014, Viện Công nghệ Châu Á (AIT) tổ chức hội thảo chuyên đề "Quản lý rủi ro trong các siêu dự án" (Managing the Complexities of Risk in Megaprojects with System Dynamics Plus) tại Trường Đại học Giao thông-Vận tải Hà Nội do diễn giả là Giáo sư  Stephen Ogunlana, đến từ Đại học Heriot-Watt, Anh Quốc trình bày.

Tham dự hội thảo lần này, có nhiều chuyên gia đến từ các tập đoàn, công ty lớn về xây dựng như Petrol Việt Nam (PVN), Điện lực Việt Nam (EVN), Tổng công ty Tư vấn xây dựng (VNCC), LILAMA, FECON, DeltaCorp... ThS, Giảng viên ngành xây dựng của Trường đại học Hà Tĩnh Trần Ngọc Tuyến và ông Hà Đình Niên, Trưởng phòng Xây dựng – Ban QLDA Điện lực Dầu khí Vũng Áng cũng tham dự Hội thảo.

Giáo sư Stephen Ogunlana, ĐH Heriot-Watt

Giáo sư Stephen Ogunlana, ĐH Heriot-Watt

Trong buổi Hội thảo, Giáo sư Stephen đã chia sẻ nhiều kinh nghiệm về tính động trong môi trường dự án xây dựng thông qua phương pháp động theo hệ thống (system dynamics). Hiểu được mô hình này, các giám đốc dự án có thể nhìn rõ được mối liên hệ giữa các yếu tố trong quản lý dự án và ảnh hưởng lẫn nhau giữa chúng, theo đó tránh và giảm thiểu tối đa các rủi ro trong các dự án đang thực hiện.

Hội thảo đã cung cấp nhiều thông tin bổ ích cho các khách mời tham dự và là cơ hội gặp gỡ, giao lưu, trao đổi kiến thức, kinh nghiệm giữa những nhà quản lý, các nhà nghiên cứu, các chuyên gia trong và ngoài nước.

]]>
itc@htu.edu.vn (ThS Trần Ngọc Tuyến, Khoa KT-CN) Nghiên cứu Fri, 07 Nov 2014 01:30:52 +0000
Các phương pháp nén ảnh số cơ bản /nghien-cuu/13-c%C3%A1c-ph%C6%B0%C6%A1ng-ph%C3%A1p-n%C3%A9n-%E1%BA%A3nh-s%E1%BB%91-c%C6%A1-b%E1%BA%A3n /nghien-cuu/13-c%C3%A1c-ph%C6%B0%C6%A1ng-ph%C3%A1p-n%C3%A9n-%E1%BA%A3nh-s%E1%BB%91-c%C6%A1-b%E1%BA%A3n I. Giới thiệu

Hiện nay có nhiều vấn đề trong việc lưu trữ và truyền tải ảnh số hoá. Nén ảnh thực sự có nhiều ứng dụng trong thực tế như: truyền các văn bản đồ hoạ qua đường điện thoại (Fax), nén ảnh trong y tế và truyền hình cáp….

Nén ảnh là một kỹ thuật mã hoá các ảnh số hoá nhằm giảm số lượng các bit dữ liệu cần thiết để biểu diễn ảnh. Mục đích là giảm đi những chi phí trong việc lưu trữ ảnh và chi phí thời gian để truyền ảnh đi xa trong truyền thông nhưng vẫn đảm bảo được chất lượng của ảnh.

Nén ảnh thực hiện được là do một thực tế: thông tin trong bức ảnh không phải là ngẫu nhiên mà có trật tự , tổ chức.Vì thế nếu bóc tách được tính trật tự, cấu trúc đó thì sẽ biết phần thông tin nào quan trọng nhất trong bức ảnh để biểu diễn và truyền đi với số lượng ít bit hơn so với ảnh gốc mà vẫn đảm bảo tính đầy đủ của thông tin. Ở bên nhận quá trình giải mã sẽ tổ chức, sắp xếp lại được bức ảnh xấp xỉ gần chính xác so với ảnh gốc nhưng vẫn thỏa mãn chất lượng yêu cầu.

Nén ảnh đạt được bằng cách loại bỏ các phần dư thừa trong ảnh đã được số hoá. Dư thừa có thể là dư thừa thông tin về không gian, dư thừa về cấp xám hay dư thừa về thời gian.

II. Nội dung

1. Phương pháp nén được phân loại như thế nào?

- Dựa vào nguyên lý nén: Nén không mất thông tin: Sau khi giải nén ta thu được chính xác dữ liệu gốc.Nén có mất thông tin: Sau khi giải nén ta không thu được dữ liệu như bản gốc.

- Dựa vào cách thức thực hiện nén: Phương pháp không gian: Tác động trực tiếp lên việc lấy mẫu của ảnh trong miền không gian.Phương pháp sử dụng biến đổi: Tác động lên sự biến đổi của ảnh gốc.

- Dựa vào triết lý của sự mã hóa: Các phương pháp nén thế hệ thứ nhất: Gồm các phương pháp mà mức độ tính toán là đơn giản.Các phương pháp nén thế hệ thứ hai: dựa vào độ bão hòa của tỷ lệ nén.

2. Một số phương pháp nén ảnh số cơ bản

Một số phương pháp nén ảnh số như:Phương pháp mã hóa loạt dài RLE (Run Length Encoding), phương pháp LZW, phương pháp mã hoá Huffman....

a. Phương pháp mã hóa loạt dài RLE (Run Length Encoding)

Mã hoá theo độ dài loạt RLE  (Run Length  Encoding) là một phương pháp nén ảnh dựa trên sự cắt bớt các dư thừa về không gian (môt vài hình ảnh có vùng màu lớn không đổi đặc biệt đối với ảnh nhị phân). Loạt được định nghĩa là dãy các phần tử điểm ảnh (pixel) liên tiếp có cùng chung một giá trị. 

* Nguyên tắc:

Nguyên tắc của phương pháp này là phát hiện một loạt các điểm ảnh lặp lại liên tiếp, ví dụ: 110000000000000011. Ta thấy điểm ảnh có giá trị 0 xuất hiện nhiều lần liên tiếp thay vì phải lưu trữ toàn bộ các điểm ảnh có giá trị 0 ta chỉ cần lưu trữ chúng bằng cách sử dụng các cặp (độ dài loạt, giá trị).

Ví dụ: Cho một chuỗi nguồn d : 

d =5 5 5 5 5 5 5 5 5 5 19 19 19 19 19 0 0 0 0 0 0 0 23 23 23 23 23 23 23 23    

Ta sẽ có chuỗi mới : (10 5) (5 19) (7 0) (8 23) 

Tỷ số nén = 30/8 = 2.5

Đối với ảnh đen trắng chỉ sử dụng 1 bit để biểu diễn 1 điểm ảnh thì phương pháp này tỏ ra rất hiệu quả, ta thấy điều đó qua ví dụ sau :

Ví dụ: Cho một chuỗi nguồn d: 

000000000000000111111111100000000001111111111000000000000000

Ta có chuỗi mới: (15, 10, 10, 10, 15)

Tỷ số nén = 60 bit / (5*4 bit) = 3 (chỉ sử dụng 4 bit để thể hiện độ dài loạt và không thể hiện giá trị loạt vì ảnh đen trắng chỉ có 2 giá trị bit là 0 hoặc là 1)

Chú ý:

- Đối với ảnh chiều dài của một dãy lặp có thể lớn hơn 255, nếu ta dùng 1 byte để lưu trữ chiều dài thì sẽ không đủ. Giải pháp được dùng là tách chuỗi đó thành 2 chuỗi: một chuỗi có chiều dài là 255, chuỗi kia có chiều dài còn lại.

- Phương pháp nén RLE chỉ đạt hiệu quả khi chuỗi lặp lớn hơn 1 ngưỡng nhất định nào đó hay nói các khác trong ảnh cần nén phải có nhiều điểm ảnh kề nhau có cùng giá trị màu. Do đó phương pháp này không đem lại cho ta kết quả một cách ổn định vì nó phụ thuộc hoàn toàn vào ảnh nén chỉ thích hợp cho những ảnh đen trắng hay ảnh đa cấp xám.

Ví dụ: Ta có một chuỗi nguồn: d=5 7 9 11 13 18 28 38 48 58 30 35 40 45

Chuỗi kết quả sau khi mã hoá :

1 5 1 7 1 9 1 11 1 13 1 18 1 28 1 38 1 48 1 58 1 30 1 35 1 40 1 45

Tỷ số nén = 14 / 28 = 0.2

Như vậy chuỗi sau khi mã hoá đã lớn hơn nhiều chuỗi nguồn ban đầu. Do đó cần phương pháp cải tiến để xử lý những trường hợp như trên tránh làm mở rộng chuỗi dữ liệu nguồn nghĩa là chỉ mã hoá độ dài loạt dữ liệu lặp lại. Người ta đã đưa ra cách đó là thêm kí tự tiền tố vào trước độ dài loạt, việc giải mã được thực hiện nếu gặp kí tự tiền tố với độ dài loạt và giá trị điểm ảnh theo sau.

Ví dụ: Ta có chuỗi nguồn:  d = 5 8 4 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 

Giả sử kí tự tiền tố là dấu “+” ta có : 5 8 4 +8 8 + 9 10

Tỷ số nén = 19 / 9 = 2.1

Tuy nhiên trong một số trường hợp các điểm ảnh có độ tương quan với nhau vể giá trị mức xám như trong ví dụ dưới đây ta có thể tiến hành xử lý như sau.

Ví dụ: Ta có một chuỗi nguồn: 

d = 5 7 9 11 13 18 28 38 48 58 55 60 65 70 75 80 85 90 95 100

Ta có dựa vào độ tương quan này để có được hiệu quả nén cao, bằng việc áp dụng e(i) = d(i) - d(i-1) sẽ thu được :

5 2 2 2 2 5 10 10 10 10 -3 5 5 5 5 5 5 5 5 5 

áp dụng phương pháp nén loạt dài ta dễ dàng thu được :

(5 1)( 2 4)(5 1)(10 5)(-3 1)(5 9) 

* Thuật toán: Thuật toán như sau :

- Tiến hành duyệt trên từng hàng cho đến khi kết thúc vùng dữ liệu ảnh, trong quá trình duyệt tiến hành kiểm tra để tìm ra những loạt có cùng giá trị đồng thời chú ý những kí hiệu xuống dòng (hay kết thúc dòng), kết thúc ảnh Bitmap, … 

- Khi gặp loạt có độ dài > 3 thì nhảy đến chế độ nén ngược lại nhảy đến chế độ không nén tuy nhiên nếu loạt > 255 thì sẽ tách ra chỉ mã < 255 sau đó mã tiếp phần còn lại. Ngoài ra còn các chế độ khác như: bắt đầu, kết thúc 1 dòng.

- Kết thúc khi gặp kí hiệu kết thúc bitmap (end – of bitmap)

b. Phương pháp mã hoá Huffman

Phương pháp mã hóa Huffman là phương pháp dựa vào mô hình thống kê. Người ta tính tần suất xuất hiện của các ký tự bằng cách duyệt tuần tự từ đầu tệp gốc đến cuối tệp. Việc xử lý ở đây tính theo bit. Trong phương pháp này các ký tự có tần suất cao một từ mã ngắn, các ký tự có tần suất thấp một từ mã dài. Như vậy với cách thức này ta đã làm giảm chiều dài trung bình của từ mã hoá bằng cách dùng chiều dài biến đổi tuy nhiên cũng có trường hợp bị thiệt 1 ít bit khi tần suất là rất thấp.

* Thuật toán

Thuật toán bao gồm 2 bước chính:

- Giai đoạn thứ nhất: tính tần suất của các ký tự trong dữ liệu gốc: duyệt tệp gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp sau đó là sắp xếp lại bảng mã theo thứ tự tần suất giảm dần.

- Giai đoạn thứ hai: mã hóa: duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có tần suất xuất hiện thấp nhất thành một phần tử duy nhất. Phần tử này có tần suất bằng tổng 2 tần suất thành phần. Tiến hành cập nhật lại bảng và đương nhiên loại bỏ 2 phần tử đã xét. Quá trình được lặp lại cho đến khi bảng chỉ có một phần tử. Quá trình này gọi là quá trình tạo cây mã Huffman vì việc tập hợp được tiến hành nhờ một cây nhị phân 2 nhánh. Phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Với cách tạo cây này, tất cả các bit dữ liệu/ký tự là nút lá; các nút trong là các nút tổng hợp. Sau khi cây đã tạo xong, người ta tiến hành gán mã cho các nút lá. Việc mã hóa rất đơn giản: mỗi lần xuống bên phải ta thêm 1 bit “1” vào từ mã; mỗi lần xuống bên trái ta thêm một bit “0”. Tất nhiên có thể làm ngược lại, chỉ có giá trên mã thay đổi còn tổng chiều dài là không đổi. Cũng chính do lý do này mà cây có tên gọi là cây mã Huffman như trên đã gọi.

Quá trình giải nén tiến hành theo chiều ngược lại khá đơn giản. Người ta cũng phải dựa vào bảng mã tạo ra trong giai đoạn nén (bảng này được giữ lại trong cấu trúc của tệp nén cùng với dữ liệu nén). Thí dụ, với một tệp dữ liệu mà tần suất các ký tự cho bởi.

Việc tạo cây nhị phân có thể được thực hiện theo một thuật toán sau:

1. Tất cả những ký tự ban đầu được xem như là những ký tự giao điểm tự do.

2. Hai nút tự do với tần số xuất hiện thấp nhất được phân công tới một nút gốc với giá trị bằng với tổng của hai nút con tự do.

3. Hai nút con được chuyển khỏi danh sách nút tự do. Chuyển nút gốc mới tạo thành công vào danh sách.

4. Bước hai sang bước ba được lặp cho đến khi chỉ có 1 nút tự do về phía trái. Nút tự do này là gốc của cây.

Quá trình xây dựng cây nhị phân Huffman được thể hiện chi tiết như trong hình sau:

Ví dụ:

Chuỗi nguồn : 00000000006666693333 è kích thước = 20*8=160 bit

Sử dụng mã Huffman theo bảng trên è kích thước =10*1+5*3+1*6+4*3= 43 bit (Vì gía trị 0 xuất hiện 10 lần nhưng chỉ dùng 1 bit để thể hiện, giá trị 6 xuất hiện 5 lần dùng 3 bit để thể hiện  ,giá trị 9 dùng 6 bit và giá trị 3 xuất hiện 4 lần dùng 3 bit để thể hiện)

Vậy tỷ số nén = 160 / 43 = 3.7

Trong phương pháp mã Huffman mã của ký tự là duy nhất và không mã nào là phần bắt đầu của mã trước.Vì vậy khi đọc theo từng bit từ đầu đến cuối tệp nén ta có thể duyệt cây mã cho đến một lá, tức là ký tự đã được giải mã. Việc giải mã chắc chắn phải sử dụng cây nhị phân giống như trong mã hoá. Để đọc, giải mã được yêu cầu phải sử dụng theo đúng tiêu chuẩn nhất định.

]]>
itc@htu.edu.vn (Nguyễn Thị Việt, Khoa Kỹ thuật – Công nghệ) Nghiên cứu Fri, 07 Nov 2014 01:00:13 +0000
Giới thiệu giống lúa siêu chịu mặn cho chất lượng cao /nghien-cuu/34-gi%E1%BB%9Bi-thi%E1%BB%87u-gi%E1%BB%91ng-l%C3%BAa-si%C3%AAu-ch%E1%BB%8Bu-m%E1%BA%B7n-cho-ch%E1%BA%A5t-l%C6%B0%E1%BB%A3ng-cao /nghien-cuu/34-gi%E1%BB%9Bi-thi%E1%BB%87u-gi%E1%BB%91ng-l%C3%BAa-si%C3%AAu-ch%E1%BB%8Bu-m%E1%BA%B7n-cho-ch%E1%BA%A5t-l%C6%B0%E1%BB%A3ng-cao Đó là giống lúa MỘT BỤI ĐỎ thuộc huyện Hồng Dân tỉnh Bạc Liêu.

Huyện Hồng Dân tỉnh Bạc Liêu là vùng đất thuộc Đồng bằng sông Cửu Long, đất ở đây bị nhiễm phèn, nhiễm mặn nặng. Những diện tích phèn hoang hoá lên tới hàng chục ngàn hecta, nhưng trồng những gì cũng kém. Nông dân đã thử đủ loại cây, đủ loại giống nhưng trụ lại bền vững chỉ có khóm (dứa) và giống lúa Một bụi mọc rải rác ở bờ đìa (ao). Cho đến đầu những năm 1990, khi phong trào nuôi tôm bắt đầu phát triển, nông dân Đồng bằng sông Cửu Long nói chung, bà con huyện Hồng Dân nói riêng lấy nước mặn vào đồng để nuôi tôm, giống lúa Một bụi đỏ tự nhiên phát triển. Từ đó, bà con đem cấy giống lúa ấy trên những vuông tôm vào mùa mưa và mô hình đó nhanh chóng trở thành phong trào mà sau này gọi là ruộng một tôm, một lúa.

Lúa siêu chịu mặn Một bụi đỏ

Lúa siêu chịu mặn Một bụi đỏ

Cho mãi đến năm 2003, nhận thấy những giá trị tiềm năng mà giống lúa một bụi bờ đìa mang lại, UBND tỉnh Bạc Liêu đã xúc tiến xây dựng thương hiệu gạo “Một bụi đỏ Hồng Dân” từ giống lúa đặc biệt này. Lãnh đạo địa phương đã đến trường Đại học Cần thơ và Viện Lúa ĐBSCL nhờ các nhà khoa học giúp đưa giống lúa Một bụi đỏ về thuần chủng. Sau khi được thuần chủng, giống lúa này sinh trưởng ổn định trong điều kiện đất đai phèn mặn cao của Hồng Dân. Từ đó, diện tích lúa Một bụi đỏ không ngừng được nhân rộng, đến nay đã tăng lên hơn 21.000 ha.

Nhằm trợ giúp bà con phát triển, tiến tới xây dựng thương hiệu gạo Một bụi đỏ, ngày 25/6/2008, gạo Một bụi đỏ Hồng dân đã được Cục Sở hữu trí tuệ cấp giấy chứng nhận đăng ký chỉ dẫn thương hiệu độc quyền. Từ khi gạo Một bụi đỏ được công nhận thương hiệu đã góp phần thay đổi tư duy mới, cách làm ăn mới của nhiều hộ nông dân trong tỉnh. Đặc biệt, diện tích sản xuất lúa Một bụi đỏ của tỉnh không dừng lại hơn 20.160ha, mà trong tương lai có thể sẽ tăng thêm. Khi đó, đòi hỏi chính quyền, ngành nông nghiệp và nông dân chủ động đề ra các giải pháp nhằm đáp ứng yêu cầu sản xuất, giữ vững và không ngừng nâng cao chất lượng gạo, tìm thị trường tiêu thụ sản phẩm…      

Lúa một bụi đỏ huyện Hồng Dân, Bạc Liêu

Lúa một bụi đỏ huyện Hồng Dân, Bạc Liêu

Từ giống lúa Một bụi đỏ, các nhà khoa học của Trường Đại học Cần Thơ tiếp tục lai tạo thành công lúa Một bụi đỏ gạo màu hồng, vượt trội về chất lượng và giá trị, lại hấp dẫn về màu sắc. Gạo có những đặc tính ưu việt, như: hạt chắc, đều, không bị vở khi xay xát, đạt tiêu chuẩn an toàn vệ sinh thực phẩm; đặc biệt là không tồn lưu hoá chất bảo vệ thực vật; hàm lượng sắt, kẽm canxi, protein, sắt cao, mềm cơm, tỷ lệ bạc bụng dưới 4%...

Sau sáu tháng trồng thử nghiệm trên 52ha, đến nay, 100% diện tích lúa Một bụi đỏ gạo hồng đã cho thu hoạch với năng suất bình quân 5,5 tấn/ha, tổng sản lượng lúa thu về hơn 280 tấn.

Với năng suất và sản lượng này, tỉnh Bạc Liêu khẳng định dự án sản xuất lúa Một bụi đỏ gạo hồng tại huyện Hồng Dân đạt kết quả cao, mang lại thành công, mở ra hướng sản xuất mới, giúp nhà nông tăng thu nhập trên cùng một diện tích sản xuất.

Công trình nghiên cứu về thổ nhưỡng của đất trồng lúa Một bụi đỏ của PGS.TS Nguyễn Quốc Thắng, Trường Đại học Hà Tĩnh và học viên Cao học Đặng Việt Quân, Sở Giáo dục - Đào tạo Bạc Liêu cho thấy, mặc dù năng suất chất lượng lúa Một bụi đỏ đã được khẳng định như trên nhưng các yếu tố về thổ nhưỡng (đa lượng cũng như vi lượng) của đất trồng lúa Một bụi đỏ thuộc về dạng đất bạc màu, các yếu tố dinh dưỡng đều thấp hơn vùng đất khác được so sánh (Huyện Vĩnh Lợi tỉnh Bạc Liêu).

Thiết nghĩ, đây là giống lúa quí có thể nghiên cứu nhân rộng ra cả nước cho những vùng đất nhiễm mặn, trong đó có Hà Tĩnh.

TÀI LIỆU THAM KHẢO

1. baobaclieu.vn/.../Nong_dan_huyen_Hong_Dan_trung_dam_lua_Mot_b...‎

2. www.khoahoc.com.vn/timkiem/lúa+một+bụi+đỏ+gạo.../index3.aspx

3. Đặng Việt Quân: "Xác định các chỉ tiêu về thổ nhưỡng, hàm lượng một số nguyên tố vi lượng và đất hiếm trong đất trồng lúa Một Bụi Đỏ ở huyện Hồng Dân tỉnh Bạc Liêu”, Luận văn Thạc sĩ, năm 2013 (PGS.TS Nguyễn Quốc Thắng hướng dẫn)

]]>
itc@htu.edu.vn (PGS.TS Nguyễn Quốc Thắng) Nghiên cứu Tue, 03 Sep 2013 13:05:09 +0000