- Hiện thực và thực nghiệm để so sánh hiệu quả của cấu trúc chỉ mục Skyline với các cấu trúc chỉ mục còn lại khi thực hiện tìm kiếm tương tự trên dữ liệu chuỗi thời gian.. Luận văn đã đư
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
Tổng quan về dữ liệu chuỗi thời gian
1.1.1 Giới thiệu dữ liệu chuỗi thời gian
Một chuỗi thời gian (time series) là một chuỗi trị số thực, mỗi trị biểu diễn một giá trị đo được tại những thời điểm cách đều nhau
Theo nghiên cứu của Tufte năm 1992, 75% trong số 4.000 bức ảnh ngẫu nhiên trên các tạp chí xuất bản giai đoạn 1974 - 1989 là các biểu đồ thể hiện dữ liệu chuỗi thời gian.
Những tập dữ liệu chuỗi thời gian thường rất lớn, xuất hiện trong nhiều lĩnh vực như y tế, kỹ thuật, tài chính,…
- Lĩnh vực tài chính, thương mại như giá cả, thị trường chứng khoán, sản phẩm…
+ Tìm trong quá khứ, những giai đoạn mà số lượng sản phẩm bán được như tháng vừa rồi
+ Tìm những sản phẩm có chu kỳ bán hàng giống nhau
+ Tìm đoạn nhạc bản quyền trong một bài hát
- Lĩnh vực khoa học như dữ liệu thu được của các bộ cảm biến thời tiết, môi trường, địa lý, …
+ Tìm những tháng trong quá khứ mà lượng mưa giống như tháng vừa rồi
+ Tìm những năm khô hạn, mực nước các sông ở mức thấp
Các lĩnh vực khác có dữ liệu không phải là chuỗi thời gian nhưng từ dữ liệu này ta có thể chuyển về dạng dữ liệu chuỗi thời gian Các bài toán nhận dạng chữ viết hay các bài toán trong lĩnh vực xử lý ảnh được chuyển thành các bài toán về xử lý dữ liệu chuỗi thời gian
Hình 1.1 minh họa chuỗi thời gian, hình (a) là biểu diễn chuỗi thời gian của dữ liệu chứng khoán và hình (b) là biểu diễn chuỗi thời gian của dữ liệu điện tâm đồ
Hình 1.1- Dữ liệu chuỗi thời gian (a) dữ liệu chứng khoán (b) dữ liệu điện tâm đồ
Theo Eamonn J Keogh, khi nghiên cứu chuỗi thời gian chúng ta sẽ gặp các vấn đề khó khăn sau [26], [27]:
- Dữ liệu chuỗi thời gian quá lớn do nhu cầu lưu trữ dữ liệu qua một khoảng thời gian dài để phân tích, đánh giá [25]
+ Trong một giờ, dữ liệu điện tâm đồ (ECG) là 1GB
+ Trong một tuần, dữ liệu ghi nhận số lần truy cập website là 5GB
- Việc đánh giá độ tương tự phụ thuộc phần lớn vào con người, và tính chất của tập dữ liệu đang dùng
- Dữ liệu quá đa dạng và dễ bị nhiễu
Thao tác tìm kiếm tương tự (similarity search) là thao tác căn bản nhất để khai phá dữ liệu chuỗi thời gian (Data Mining in Time Series)
1.1.2 Các bài toán của dữ liệu chuỗi thời gian
Khác với cơ sở dữ liệu truyền thống, cơ sở dữ liệu chuỗi thời gian có thể chứa dữ liệu bị nhiễu và dữ liệu sai, do đó khả năng tồn tại hai chuỗi thời gian có cùng giá trị trong cùng thời điểm là rất nhỏ Vì vậy, tìm kiếm tương tự (similarity search) thích hợp hơn so với tìm kiếm chính xác (exact search)
Tìm kiếm tương tự trong cơ sở dữ liệu chuỗi thời gian là một hướng nghiên cứu quan trọng và được nhiều nhà nghiên cứu quan tâm Bài toán tìm kiếm tương tự là thao tác căn bản nhất, là thành phần không thể thiếu trong các bài toán khai phá dữ liệu chuỗi thời gian Nhiều phương pháp đã được đề xuất để cung cấp những giải thuật xử lý truy vấn hiệu quả trên dữ liệu chuỗi thời gian Có một số nhóm các bài toán khai phá dữ liệu chuỗi thời gian như dưới đây [5]
- Bài toán gom cụm (Clustering)
- Bài toán phân lớp (Classification)
- Bài toán tìm mô típ (Finding motif) [11]
- Bài toán phát hiện mẫu bất thường (Anomaly Detection)
- Bài toán khám phá luật kết hợp (Association Rules)
- Bài toán trực quan hóa dữ liệu (Visualization)
1.1.3 So trùng toàn bộ và so trùng chuỗi con trên dữ liệu chuỗi thời gian
Trong tìm kiếm trên dữ liệu chuỗi thời gian, thao tác cơ bản bao gồm: so trùng toàn bộ, tìm kiếm toàn bộ chuỗi con.
- So trùng toàn bộ (whole matching): Đối với những truy vấn so trùng toàn bộ thì chiều dài của chuỗi dữ liệu truy vấn và chiều dài chuỗi dữ liệu ban đầu là bằng nhau Bài toán này thường được dùng trong việc gom cụm, hay phân loại dữ liệu chuỗi thời gian Ví dụ: Tìm giá chứng khoán của những công ty nào thay đổi giống nhau
Hình 1.2 ở dưới minh họa việc so trùng toàn bộ trong chuỗi thời gian, trong đó câu truy vấn và các đối tượng trong cơ sở dữ liệu có chiều dài bằng nhau
Hình 1.2- So trùng toàn bộ (nguồn [22])
Trong trường hợp so trùng chuỗi con, dữ liệu truy vấn có độ dài ngắn hơn đáng kể so với dữ liệu gốc Do đó, mục đích chính là tìm kiếm những phân đoạn trong dữ liệu gốc tương ứng với dữ liệu truy vấn Bài toán này có nhiều ứng dụng thực tiễn, chẳng hạn như xác định các mẫu dữ liệu quan trọng hoặc phát hiện những thay đổi bất thường trong dữ liệu gốc.
Hình 1.3 minh họa việc so trùng chuỗi con trong chuỗi thời gian, trong đó câu truy vấn có chiều dài nhỏ hơn nhiều so với đối tượng trong cơ sở dữ liệu
Hình 1.3- So trùng chuỗi con (nguồn [22])
Bài toán so trùng chuỗi con là bài toán rất căn bản của lĩnh vực nghiên cứu về dữ liệu chuỗi thời gian Từ bài toán so trùng chuỗi con trên dữ liệu chuỗi thời gian thì ta có thể mở rộng thành so trùng toàn bộ Một số bài toán khác cũng sử dụng kết quả dựa trên bài toán so trùng chuỗi con như bài toán gom cụm (clustering), phân lớp (classification), tìm quy luật của dữ liệu (rule discovery), phát hiện điểm bất thường (novelty detection), dự báo dữ liệu trong tương lai (prediction)
1.1.4 Các dạng truy vấn tương tự trên dữ liệu chuỗi thời gian Định nghĩa truy vấn tương tự (similarity search): Cho trước một đối tượng truy vấn Q, tìm tất cả các đối tượng Q x , trong cơ sở dữ liệu tương tự với Q ở một mức nào đó
Truy vấn tương tự đã được nghiên cứu để áp dụng cho các đối tượng đa chiều, chuỗi thời gian và một số loại dữ liệu khác
Có 3 loại truy vấn tương tự được sử dụng rộng rãi trong những công trình nghiên cứu và trong các tài liệu:
- Truy vấn tương tự vùng (similarity range query): cho trước một đối tượng truy vấn q, một tập các đối tượng A và khoảng cách e, tìm ra tất cả các đối tượng a ϵ A sao cho dist(q, a) ≤ e
- Truy vấn tương tự k-láng-giềng-gần-nhất (similarity k-nearest neighbors): cho trước một đối tượng truy vấn q, một tập các đối tượng A và một số nguyên k, tìm tất cả k đối tượng a i ϵ A (1 ≤ i ≤ | A |) sao cho với bất kỳ đối tượng a j ϵ A (1 ≤ j ≤ |A| và j≠i) thì dist(q, a i ) ≤ dist(q, a j )
- Truy vấn tương tự kết nối (similarity join query): cho hai tập đối tượng A , B và khoảng cách e, tìm tất cả các cặp (a, b) với a ϵ A và b ϵ B sao cho dist(a, b) ≤ e
Bài toán tìm kiếm tương tự có thể được áp dụng so trùng toàn bộ hay so trùng chuỗi con và có thể áp dụng trên chuỗi thời gian tĩnh hoặc chuỗi thời gian dạng luồng
1.1.5 Vấn đề của truy vấn tương tự trên dữ liệu chuỗi thời gian
Giới thiệu đề tài
Có nhiều phương pháp thu giảm số chiều được áp dụng trong dữ liệu chuỗi thời gian
- Các phương pháp biến đổi sang miền tần số: như các kỹ thuật biến đổi Fourier rời rạc (Discrete Fourier Transformation – DFT) [1], [2], [17], [41] hay biến đổi Wavelet rời rạc (Discrete Wavelet Transformation - DWT) [9], [39], [44]
- Các phương pháp xấp xỉ tuyến tính như: phương pháp xấp xỉ tuyến tính từng đoạn (Piecewise Linear Approximation – PLA) [10], [25], [26], phương pháp xấp xỉ gộp từng đoạn (Piecewise Aggregate Approximation - PAA) [23], phương pháp xấp xỉ hằng số từng đoạn thích nghi (Adaptive Piecewise Constant Approximation – APCA) [24]
- Các phương pháp điểm quan trọng bao gồm một số phương pháp như phương pháp điểm mốc (landmark) do Perng và các cộng sự đưa ra năm 2000 [38], phương pháp điểm cực trị do Fint và Pratt đề xuất năm 2001 [18], phương pháp điểm PIP
Sau khi thu giảm số chiều, chúng ta cũng có nhiều sự lựa chọn trong các phương pháp đánh chỉ mục vì có rất nhiều cấu trúc chỉ mục khác nhau đã được nghiên cứu
- Cấu trúc chỉ mục k-d-Tree/Quad Tree
- Cấu trúc chỉ mục R-Tree/R * -Tree [7], [19]
- Cấu trúc chỉ mục M-Tree/M + -Tree [13], [55]
- Và gần đây nhất là cấu trúc chỉ mục Skyline [32]
Như vậy, việc lựa chọn phương pháp thu giảm nào cũng như cấu trúc chỉ mục nào để sử dụng trong bài toán dữ liệu chuỗi thời gian là vấn đề rất quan trọng
Trong khuôn khổ luận văn này, chúng tôi sẽ tập trung chính vào cấu trúc chỉ mục Skyline và khảo sát sự hiệu quả của cấu trúc chỉ mục này bằng cách so sánh với các cấu trúc chỉ mục đã từng sử dụng trước đó như R * -Tree, M-Tree, M + -Tree Để đáp ứng tốt yêu cầu đặt ra ở trên, trong luận văn này, chúng tôi tập trung giải quyết các vấn đề sau:
- Thực hiện rút trích đặc trưng dữ liệu chuỗi thời gian nhằm thu giảm kích thước dữ liệu mà vẫn bảo đảm được tính đặc trưng của dữ liệu Trong khuôn khổ luận văn này, chúng tôi tập trung vào hai phương pháp chính để rút trích đặc trưng đó là phương pháp xấp xỉ gộp từng đoạn - PAA và phương pháp biến đổi Haar Wavelet
Để lưu trữ và truy vấn dữ liệu hiệu quả, cần xây dựng cấu trúc chỉ mục phù hợp từ dữ liệu đã được trích xuất Luận văn đã sử dụng các cấu trúc chỉ mục gồm R*-Tree, M-Tree, M+-Tree và Skyline.
- Tiến hành truy vấn trên các tập dữ liệu mẫu, dựa trên các kết quả thực nghiệm, chúng tôi sẽ đánh giá sự hiệu quả của các cấu trúc chỉ mục dựa trên các tiêu chí cho trước.
Mục đích, đối tượng, phạm vi nghiên cứu
Mục đích nghiên cứu của luận văn này là khảo sát toàn diện sự hiệu quả của cấu trúc chỉ mục Skyline so với các cấu trúc chỉ mục khác đã được sử dụng trước đó như R * -Tree, M-Tree, M + -Tree dựa trên các tiêu chí như thời gian xây dựng chỉ mục, thời gian truy vấn, số lần truy đạt đĩa, số lần gọi hàm tính khoảng cách nhằm đưa ra kết luận chính xác nhất về sự hiệu quả của các cấu trúc chỉ mục, sử dụng chúng lúc nào và như thế nào là hợp lý
1.3.2 Đối tượng nghiên cứu Đối tượng nghiên cứu gồm ba thành phần như sau:
- Phương pháp thu giảm số chiều PAA và Haar Wavelet
- Bốn cấu trúc chỉ mục R * -Tree, M-Tree, M + -Tree và Skyline
Luận văn này giới hạn nghiên cứu ở những khía cạnh sau - Sử dụng trên chuỗi thời gian tĩnh
- Dùng phép biến đổi PAA và Haar Wavelet trong giai đoạn trích xuất đặc trưng để thu giảm số chiều của dữ liệu chuỗi thời gian
- Sử dụng các cấu trúc chỉ mục R * -Tree, M-Tree, M + -Tree và Skyline trong giai đoạn lập chỉ mục
- Độ đo tương tự của hai đối tượng dữ liệu được dùng trong luận văn là độ đo Minkowski với trường hợp đặc biệt là khoảng cách Euclid
- Chương trình hỗ trợ người dùng so trùng mẫu thông qua một giao diện
- Chương trình được thiết kế để chạy thực nghiệm hàng loạt dữ liệu cho trước và kết quả được lưu trữ vào trong một tập tin excel được thiết kế trước.
Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài
So sánh cấu trúc chỉ mục Skyline với các cấu trúc chỉ mục khác nhằm đưa ra đánh giá chính xác nhất cho việc sử dụng cấu trúc chỉ mục này, với kết quả từ đề tài này, các công trình nghiên cứu sau này hoàn toàn có thể dựa vào kết quả này để xác định phương pháp lựa chọn cho phù hợp tùy yêu cầu bài toán
Sự thành công của nghiên cứu này là nền tảng để áp dụng vào nhiều lĩnh vực trong thực tế:
- Tìm những tháng trong quá khứ có lượng mưa giống như tháng vừa rồi
- Dự báo tỉ giá ngoại tệ, vàng, chứng khoán
- Xác định những mã chứng khoán, ngoại tệ có sự thay đổi giá tương tự nhau
- Phát hiện những mẫu bất thường trong một bài hát, hay xem xét việc đạo nhạc
- Chẩn đoán bệnh trong y học
- Nhận dạng khuôn mặt, chữ viết, biển số xe
- Phát hiện mô típ trên dữ liệu chuỗi thời gian
- Nhận dạng mô hình tăng trưởng của công ty
- Xác định những sản phẩm có kiểu mẫu doanh số bán hàng tương tự nhau
Cấu trúc của luận văn
Luận văn gồm có 5 chương, cấu trúc của luận văn như sau:
Chương 1: Tổng quan về đề tài
Chương này sẽ giới thiệu tổng quan về chuỗi thời gian, các khái niệm cơ bản khi làm việc với chuỗi thời gian Giới thiệu tổng quan về đề tài, nhiệm vụ của đề tài cũng như ý nghĩa khoa học và thực tiễn của đề tài
Chương 2: Tổng thuật các công trình liên quan
Chương này sẽ trình bày các nghiên cứu quốc tế gần đây về lĩnh vực chuỗi thời gian, bao gồm nghiên cứu về đo lường độ tương tự, trích xuất đặc trưng và xây dựng cấu trúc chỉ mục.
Chương 3: Cơ sở lý thuyết nền tảng
Chương trình bày cơ sở lý thuyết cho luận văn, bao gồm phương pháp biến đổi PAA và Haar Wavelet để trích xuất đặc trưng dãy thời gian, sử dụng cấu trúc chỉ mục R*-Tree và M-Tree để xây dựng chỉ mục cho dữ liệu đa chiều.
M + -Tree và Skyline Phần cuối cùng, tác giả sẽ chỉ rõ hướng đề tài nghiên cứu
Chương 4: Hiện thực và thực nghiệm
Trình bày nội dung của đề tài đang nghiên cứu, mô hình xây dựng của đề tài và sau đó đưa ra các kết quả thực nghiệm và những đánh giá của tác giả
Chương 5: Kết luận và hướng phát triển, cũng như đánh giá các điểm làm được và chưa làm được của đề tài.
CHƯƠNG 2: TỔNG THUẬT CÁC CÔNG TRÌNH LIÊN QUAN
Các công trình về độ đo tương tự
Dữ liệu chuỗi thời gian được biểu diễn thành những dãy số thực, và để thực hiện bài toán tìm kiếm tương tự trên tập dữ liệu chuỗi thời gian đó thì ta phải tính toán độ tương tự giữa chúng Giả sử ta có hai chuỗi thời gian X = x 1 , x 2 , …, x n và Y = y 1 , y 2 , …, y n Độ tương tự giữa hai chuỗi là SIM(X, Y) [5], nếu khoảng cách giữa X và Y là 0 thì hai đối tượng này được xem là giống hệt nhau, và khoảng cách càng lớn thì hai đối tượng càng khác biệt nhau Độ đo tương tự có vai trò vô cùng quan trọng trong bài toán tìm kiếm tương tự trên dữ liệu chuỗi thời gian, đặc biệt là trong các mô hình thu giảm số chiều Nếu gọi X f , Y f là biểu diễn của X, Y sau khi thu giảm số chiều thì độ đo khoảng cách D phải bảo đảm D(X f , Y f ) ≤ D(X, Y) (tính chất chặn dưới khoảng cách) Độ đo khoảng cách D(A, B) giữa hai đối tượng A, B có các tính chất sau [21]:
- Tính tự tương tự (Constancy of Self-Similarity): D(A, A) = 0
- Tính dương (Positivity): D(A, B) = 0, nếu và chỉ nếu A = B
- Bất đẳng thức tam giác (Triangular Inequality): D(A, B) ≤ D(A, C) + D(B, C) Để tính khoảng cách của hai chuỗi thì ta có rất nhiều cách được nói đến bên dưới
Tùy thuộc vào ngữ cảnh áp dụng mà chúng ta lựa chọn các độ đo khác nhau Trong nhiều trường hợp, chỉ cần sử dụng độ đo Euclid thuộc chuẩn Lp đơn giản là đủ [5] Thống kê cho thấy có tới 80% công trình nghiên cứu trong lĩnh vực khai phá dữ liệu chuỗi thời gian áp dụng độ đo này [21].
Khoảng cách Minkowski được định nghĩa như sau [52]:
Với p có thể nhận các giá trị khác nhau 1, 2, …, ∞ Tuy nhiên, trong các công trình nghiên cứu thì p thường nhận các giá trị sau: p = 1: khoảng cách Manhattan p = 2: khoảng cách Euclid (thường dùng nhất) p = ∞: khoảng cách Max
Là một trường hợp đặc biệt của khoảng cách Minkowski, khoảng cách Euclid giữa hai chuỗi thời gian được định nghĩa như sau:
Cho hai chuỗi thời gian Q = q 1 , q 2 , …, q n và C = c 1 , c 2 , …, c n Độ đo khoảng cách Euclid giữa hai chuỗi thời gian này được cho bởi công thức:
Hình 2.1 minh họa cho ta thấy cách tính khoảng cách giữa hai chuỗi dùng độ đo Euclid Độ đo này được tính bằng cách ánh xạ 1-1 trên những điểm của hai chuỗi
Hình 2.1- Cách tính độ đo Euclid (nguồn [21]) Ưu điểm của độ đo khoảng cách Euclid:
+ Dễ hiểu, dễ tính toán
+ Dễ mở rộng cho nhiều bài toán khai phá dữ liệu chuỗi thời gian khác như gom cụm, phân lớp, nhận dạng mô típ, v.v…Đặc biệt, độ đo này rất thích hợp khi sử dụng các biến đổi DFT, DWT, PAA, APCA, SAX…
Nhược điểm của độ đo khoảng cách Euclid:
+ Nhạy cảm với nhiễu và các biến dạng (distortions) của dữ liệu
Các loại biến dạng chính của dữ liệu:
+ Dịch chuyển đường cơ bản (Offset Translation)
+ Co dãn biên độ dao động (Amplitude Scaling)
+ Dữ liệu có xu hướng tuyến tính (Linear Trend)
Để áp dụng các thuật toán so khớp mẫu dựa trên phép tính trung bình và độ lệch chuẩn, tác giả Gunopulos D., et al (1997) đề xuất cần chuẩn hóa dữ liệu chuỗi thời gian trước bằng cách trừ giá trị trung bình khỏi các điểm dữ liệu hoặc chia phép tính chênh lệch này cho giá trị phương sai.
+ Tác giả Rafiei, D & Mendelzon, A O (1998) [41] đề nghị áp dụng phương pháp trung bình di chuyển (moving average) để làm trơn các đường biểu diễn dữ liệu chuỗi thời gian như sau:
+ Tác giả Chan, K., Fu, A W (1999) [9] đề nghị cách tính độ tương tự có sự thay đổi dựa trên khoảng cách Euclid như sau:
Chuẩn hóa đường cơ bản về đường x = 0 cho phép so sánh hai chuỗi thời gian Q và C Bằng cách đưa chúng về cùng một đường cơ bản, có thể xác định khoảng cách giữa chúng một cách chính xác hơn.
Hình 2.2- Biến dạng dịch chuyển đường cơ bản và cách loại bỏ (nguồn [21])
Hình 2.3 minh họa việc loại bỏ lỗi co dãn biên độ dao động Bằng cách chia kết quả sau khi xử lý dịch chuyển đường cơ bản cho một lượng phương sai, ta có thể loại bỏ được những lỗi do nhiễu này
Hình 2.3- Biến dạng co dãn biên độ dao động và cách loại bỏ (nguồn [21])
Hình 2.4 minh họa việc loại bỏ lỗi xu hướng tuyến tính bằng cách xác định trước hướng và điều chỉnh các chuỗi thời gian theo hướng đó
Hình 2.4- Biến dạng xu hướng tuyến tính và cách loại bỏ (nguồn [21])
Hình 2.5 minh họa việc loại bỏ lỗi do nhiễu bằng cách tính toán lại giá trị của một điểm dựa trên các điểm lân cận với nó
Hình 2.5- Nhiễu và cách loại bỏ (nguồn [21])
2.1.2 Độ đo xoắn thời gian động
Việc so trùng hai đường biểu diễn dữ liệu bằng cách tính khoảng cách từng cặp điểm 1-1 (điểm thứ i của đường thứ I so với điểm thứ i của đường thứ II) như độ đo
Euclid là không phù hợp trong trường hợp hai đường này không hoàn toàn giống nhau nhưng hình dạng biến đổi rất giống nhau
Như trong hình 2.6, hai đường biểu diễn rất giống nhau về hình dạng nhưng lệch nhau về thời gian Trong trường hợp này, nếu tính khoảng cách bằng cách ánh xạ 1-1 giữa hai đường thì kết quả rất khác nhau và có thể dẫn đến kết quả cuối cùng không giống như mong muốn
Vì vậy để khắc phục nhược điểm này, thì một điểm có thể ánh xạ với nhiều điểm và ánh xạ này không thẳng hàng Phương pháp này gọi là xoắn thời gian động
(Dynamic Time Warping – DTW) được đề xuất bởi Bernt và Clifford vào năm 1994
[8] Hình 2.6 dưới minh họa hai độ đo Euclid và DTW cũng như chỉ ra sự khác biệt giữa chúng
Hình 2.6- Độ đo xoắn thời gian động (b) và độ đo Euclid (a) (nguồn [21]) Ưu điểm của phương pháp DTW:
+ Cho kết quả chính xác hơn so với độ đo Euclid, đặc biệt là trong những tập dữ liệu nhỏ
+ Cho phép nhận dạng mẫu có hình dạng giống nhau nhưng chiều dài hình dạng về thời gian có thể khác nhau
Nhược điểm của phương pháp DTW:
Nhược điểm lớn nhất của phương pháp DTW là thời gian chạy rất lâu, gấp hàng trăm đến hàng ngàn lần so với độ đo Euclid Sở dĩ thời gian chạy lâu là vì thuật toán DTW phải tính toán tất cả các đường dẫn khả dĩ trong ma trận, và số lượng đường dẫn này tăng theo cấp số nhân khi độ dài chuỗi tăng Trong khi đó, độ đo Euclid chỉ cần tính toán một khoảng cách đơn giản giữa hai điểm.
= n (n là chiều dài của dữ liệu) Khi đó, độ phức tạp là O(n 2 ) Sau này, ta đưa ra thông số cửa sổ xoắn w (w