text:
Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
lượt xem 998
download
Đây là 7 tài liệu chọn lọc bộ sưu tập này vui lòng chọn tài liệu bên dưới để xem và tải về
Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
Tóm tắt nội dung
Hoạt động kinh doanh là gì? tất cả các hoạt động kinh doanh đều có một số đặc điểm cơ bản chung đó tạo ra lợi nhuận và hoạt động ở một thị trường mà ở đó bạn bán sản phẩm và dịch vụ cho các khách hàng trong khi phải đối mặt với sự cạnh tranh
Bình luận (0) Đăng nhập để gửi bình luận!
Tài liệu trong BST: Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
Chiến Lược Marketing Hỗn Hợp 4P (marketing mix)
0p 9356 2228
Chiến lược marketing về cơ bản thường được triển khai chung quanh 4 yết tố, thường được gọi là 4Ps cho dễ nhớ: Sản phẩm (product), Giá (price), Xúc tiến thương mại hay Truyền thông (promotion) và Kênh phân phối (place). Tuỳ vào tình hình thực tế của thị trường mà người ta vận dụng một hay nhiều yếu tố để thực hiện chiến lược thị trường.
Chapter_1_-_Những vấn đề cơ bản Marketing
24p 1632 1463
Có nhiều cách định nghĩa Marketing khác nhau. Marketing là quá trình tổ chức lực lượng bán hàng nhằm bán được những hàng hóa do công ty sản xuất ra. Marketing là quá trình quảng cáo và bán hàng. Marketing là quá trình tìm hiểu và thỏa mãn nhu cầu của thị trường. Hay Marketing là làm thị trường, nghiên cứu thị trường để thỏa mãn nó. Chúng ta cũng có thể hiểu rằng Marketing là các cơ chế kinh tế và xã hội mà các tổ chức và cá nhân sử dụng nhằm thỏa mãn nhu cầu và mong......
Kỹ năng kinh doanh và marketing cơ bản
79p 4185 2571
Hoạt động kinh doanh là gì? tất cả các hoạt động kinh doanh đều có một số đặc điểm cơ bản chung đó tạo ra lợi nhuận và hoạt động ở một thị trường mà ở đó bạn bán sản phẩm và dịch vụ cho các khách hàng trong khi phải đối mặt với sự cạnh tranh
Chiến lược marketing của cafe Trung Nguyên
18p 6878 2603
1/Khái Niệm: - Chiến lược marketing là cách thức doanh nghiệp sẽ làm để đạt được mục tiêu mục tiêu marketing của mình. 2/Cách tiếp cận: 2 cách - Theo cách tiếp cận sản phẩm- thị trường. - Theo cách tiếp cận về phối hợp các biến số marketing (marketing- mix).
Nghiên cứu Marketing - Nước mắm Knorr
50p 1469 841
Đây là bản báo cáo nghiên cứu lý do người tiêu dùng (các bà bội trợ) không, hay ngừng sử dụng sản phẩm nước mắm Knorr. Mục tiêu của bài nghiên cứu này là: · Tìm hiểu về các sản phẩm đang nước mắm đang được sử dụng và đánh giá của người tiêu dùng về chúng. · Tìm hiểu về đánh giá của người tiêu dùng về các nhân tố ảnh hưởng đến quyết định mua nước mắm của người tiêu dùng. · Tìm hiểu đánh giá của người tiêu dùng về nước mắm Knorr của Unilever và lý do họ không hay dừng sử dụng sản...
Câu Hỏi Trắc Nghiệm Môn Marketing nhập môn
22p 4067 2280
Bộ đề thi 6748 câu trắc nghiệm đầy đủ và chi tiết các chương của marketing căn bản hỗ trợ sinh viên trong việc nghiên cứu và thi cử.
Giáo trình marketing căn bản - Nguyễn Thị Thanh Huyền
105p 2864 1403
Giáo trình marketing căn bản gồm 6 chương: Chương 1: Khái quát chung về marketing: Lịch sử hình thành; vai trò; chức năng; phương pháp nghiên cứu marketing, chương 2: Thị trường và nghiên cứu thị trường, chương 3: Chính sách sản phẩm, chương 4: Chính sách giá cả, chương 5: Chính sách phân phối, chương 6: Chính sách xúc tiến hỗn hợp.
BỘ SƯU TẬP BẠN MUỐN TẢI

markdown:
# Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
lượt xem 998
download
Đây là 7 tài liệu chọn lọc bộ sưu tập này vui lòng chọn tài liệu bên dưới để xem và tải về
![](http://image1.tailieu.vn/document/thumbnail/collection/240x160/214223_26.jpg)
##
Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
Tóm tắt nội dung
[Vui lòng tải xuống để xem tài liệu đầy đủ](#dboxlogin)
Download
![](images/down16x21.png)
Hoạt động kinh doanh là gì? tất cả các hoạt động kinh doanh đều có một số đặc điểm cơ bản chung đó tạo ra lợi nhuận và hoạt động ở một thị trường mà ở đó bạn bán sản phẩm và dịch vụ cho các khách hàng trong khi phải đối mặt với sự cạnh tranh
Bình luận (0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
### Tài liệu trong BST: Tuyển tập tài liệu tìm hiểu kinh doanh - marketing hiệu quả
[Chiến Lược Marketing Hỗn Hợp 4P (marketing mix)](http://tailieu.vn/doc/chien-luoc-marketing-hon-hop-4p-marketing-mix--4095.html)
0p
9356
2228
Chiến lược marketing về cơ bản thường được triển khai chung quanh 4 yết tố, thường được gọi là 4Ps cho dễ nhớ: Sản phẩm (product), Giá (price), Xúc tiến thương mại hay Truyền thông (promotion) và Kênh phân phối (place). Tuỳ vào tình hình thực tế của thị trường mà người ta vận dụng một hay nhiều yếu tố để thực hiện chiến lược thị trường.
[Chapter_1_-_Những vấn đề cơ bản Marketing](http://tailieu.vn/doc/chapter-1-nhung-van-de-co-ban-marketing-8389.html)
24p
1632
1463
Có nhiều cách định nghĩa Marketing khác nhau. Marketing là quá trình tổ chức lực lượng bán hàng nhằm bán được những hàng hóa do công ty sản xuất ra. Marketing là quá trình quảng cáo và bán hàng. Marketing là quá trình tìm hiểu và thỏa mãn nhu cầu của thị trường. Hay Marketing là làm thị trường, nghiên cứu thị trường để thỏa mãn nó. Chúng ta cũng có thể hiểu rằng Marketing là các cơ chế kinh tế và xã hội mà các tổ chức và cá nhân sử dụng nhằm thỏa mãn nhu cầu và mong......
[Kỹ năng kinh doanh và marketing cơ bản](http://tailieu.vn/doc/ky-nang-kinh-doanh-va-marketing-co-ban-31695.html)
79p
4185
2571
Hoạt động kinh doanh là gì? tất cả các hoạt động kinh doanh đều có một số đặc điểm cơ bản chung đó tạo ra lợi nhuận và hoạt động ở một thị trường mà ở đó bạn bán sản phẩm và dịch vụ cho các khách hàng trong khi phải đối mặt với sự cạnh tranh
[Chiến lược marketing của cafe Trung Nguyên](http://tailieu.vn/doc/chien-luoc-marketing-cua-cafe-trung-nguyen-144060.html)
18p
6878
2603
1/Khái Niệm: - Chiến lược marketing là cách thức doanh nghiệp sẽ làm để đạt được mục tiêu mục tiêu marketing của mình. 2/Cách tiếp cận: 2 cách - Theo cách tiếp cận sản phẩm- thị trường. - Theo cách tiếp cận về phối hợp các biến số marketing (marketing- mix).
[Nghiên cứu Marketing - Nước mắm Knorr](http://tailieu.vn/doc/nghien-cuu-marketing-nuoc-mam-knorr-183543.html)
50p
1469
841
Đây là bản báo cáo nghiên cứu lý do người tiêu dùng (các bà bội trợ) không, hay ngừng sử dụng sản phẩm nước mắm Knorr. Mục tiêu của bài nghiên cứu này là: · Tìm hiểu về các sản phẩm đang nước mắm đang được sử dụng và đánh giá của người tiêu dùng về chúng. · Tìm hiểu về đánh giá của người tiêu dùng về các nhân tố ảnh hưởng đến quyết định mua nước mắm của người tiêu dùng. · Tìm hiểu đánh giá của người tiêu dùng về nước mắm Knorr của Unilever và lý do họ không hay dừng sử dụng sản...
[Câu Hỏi Trắc Nghiệm Môn Marketing nhập môn](http://tailieu.vn/doc/cau-hoi-trac-nghiem-mon-marketing-nhap-mon-204169.html)
22p
4067
2280
Bộ đề thi 6748 câu trắc nghiệm đầy đủ và chi tiết các chương của marketing căn bản hỗ trợ sinh viên trong việc nghiên cứu và thi cử.
[Giáo trình marketing căn bản - Nguyễn Thị Thanh Huyền](http://tailieu.vn/doc/giao-trinh-marketing-can-ban-nguyen-thi-thanh-huyen-285579.html)
105p
2864
1403
Giáo trình marketing căn bản gồm 6 chương: Chương 1: Khái quát chung về marketing: Lịch sử hình thành; vai trò; chức năng; phương pháp nghiên cứu marketing, chương 2: Thị trường và nghiên cứu thị trường, chương 3: Chính sách sản phẩm, chương 4: Chính sách giá cả, chương 5: Chính sách phân phối, chương 6: Chính sách xúc tiến hỗn hợp.
BỘ SƯU TẬP BẠN MUỐN TẢI

Server: Apache/2.2.31 (CentOS)

Set-Cookie: TLDEVNamespace=n4f8tpbbp28jmab3ig13977455; path=/; domain=.tailieu.vn; HttpOnly


text:
Cọc vật liệu rời - Thiết kế, thi công và hành vi
Chia sẻ: Hoangquoc Vinh | Ngày: | Loại File: DOC | Số trang:9
lượt xem 63
download
Cọc vật liệu rời - Thiết kế, thi công và hành vi
Cọc vật liệu rời lúc đầu được phát triển, như mọi loại cọc khác, chủ yếu nhằm để đỡ tải trọng nén xuống. Tuy nhiên, sức chịu tải của cọc đơn hoặc một nhóm Cọc vât liệu rời khá hạn chế vì chúng hay bị phình. Có thể làm tăng sức chịu tải của cọc vật liệu rời bằng cách gia cường thêm vải hoặc lưới địa kỹ thuật, ở dạng các tấm hoặc bao nhằm hạn chế hiện tượng đầu cọc bị phình ra....
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Cọc vật liệu rời - Thiết kế, thi công và hành vi
- Cọc vật liệu rời - Thiết kế, thi công và hành vi Tóm tắt Cọc vật liệu rời lúc đầu được phát triển, như mọi loại cọc khác, chủ yếu nhằm để đỡ tải trọng nén xuống. Tuy nhiên, sức chịu tải của cọc đơn hoặc một nhóm Cọc vât liệu rời khá hạn chế vì chúng hay bị phình. Có thể làm tăng sức chịu tải của cọc vật liệu rời bằng cách gia cường thêm vải hoặc lưới địa kỹ thuật, ở dạng các tấm hoặc bao nhằm hạn chế hiện tượng đầu cọc bị phình ra. Một nhóm nhỏ cọc vật liệu rời có thể bị phá huỷ theo nhiều kiểu, tư kiểu đâm thủng đơn giản đối với các cọc ngắn, kiểu phá huỷ do nén dọc trục đối với các cọc dài, đến kiểu bị oằn do cắt của các Cọc vật liệu rời ngoại vi. Nhưng chúng nhiều khi lại là một giải pháp kinh tế thay cho phương án nhóm cọc khá đắt tiền. Bằng đôi chút cải tiến đơn giản, như đặt một tấm thép, để bê tông hoặc một tấm lưới địa kỹ thuật ở đáy, thêm một sợi cáp hoặc dây thép ở chân móng, Cọc vật liệu rời có thể chịu được các lực nhổ hoặc đẩy lên. Phản ứng của các neo làm bằng Cọc vật liệu rời (GPA) hay hơn nhiều so với các loại cọc đặc vì tải trọng được truyền trực tiếp xuống mũi cọc, nơi khả năng chống phình của cọc là cao nhất. Cải tiến này còn tỏ ra hiệu quả hơn đối với các loại cọc đất cố kết bình thường, vốn có sức bền không thoát nước tăng dần theo độ sâu. Bài này tóm tắt và trình bày khái quát những tiến bộ liên quan đến Cọc vật liệu rời. Giới thiệu Nhìn chung, khái niệm nền đất yếu bao hàm các loại đất sét yếu, đất với tỷ phần hạt mịn, như bột, cao hoặc đất sét chứa hàm lượng nước cao, đất chứa nhiều than bùn và các tập cát lỏng ở gần hoặc dưới mực nước ngầm. Đối với các loại đất dạng sét, “độ yếu” của chúng có thể đánh giá trên cơ sở sức kháng nén không nở hông, qu . Mặt khác, giá trị SPT N cũng được dùng để đánh giá độ chắc và tỷ trọng tương đối của nền đất. Bảng 1 phân loại nền đất yếu theo tính chất công trình xây dựng trên chúng trên cơ sở các phương pháp đánh giá kể trên. Xét các yếu tố như tầm quan trọng của công trình, tải trọng, điều kiện nền đất, thời gian xây dựng... có thể thấy rõ tầm quan trọng của việc chọn lựa phương pháp thích hợp đối với từng loại đất cụ thể như nêu ở Bảng 2. Đối với đất yếu và đất kết dính trong điều kiện đang lún, có thể áp dụng các biện pháp cải thiện nền đất như Cọc vật liệu rời nện, thêm phụ gia (phương pháp trộn sâu hoặc thoát nước bằng bấc thấm. Đối với các loại nền cát rời có thể áp dụng các biện pháp đầm hiện trường như đầm rung, đầm cộng hưởng và đầm rung nổi (vibrofloatation). Đối với các nền đất đắp nổi cao trên mặt đất, có thể áp dụng các biện pháp gia cường đất, ổn định cơ học (MSE) hoặc sử dụng các vật liệu địa kỹ thuật nhẹ. Trong số các biện pháp cải thiện nền đất ngoài trời, có lẽ cọc cát hoặc đá là vạn năng nhất. Chúng trước hết giúp gia cường nền và tiêu thoát nước, sau đó còn giúp cải thiện sức bền và đặc điểm biến dạng của đất yếu sau khi thi công và tái cố kết. Cọc vật liệu rời, thay thế cho một phần đất yếu lấy đi, làm tăng dung trọng của đất, tiêu thoát nhanh lượng áp lực nước lỗ rỗng dư, làm việc như những kết cấu khoẻ, cứng chắc và chịu được ứng suất cắt lớn hơn. Cọc vật liệu rời có thể áp dụng cho nhiều kiểu loại đất khác nhau, từ các loại cát rời đến đất sét yếu và các loại đất hữu cơ. Cọc vật liệu rời rất kinh tế kể cả khi phải chịu tải ở mũi cọc. Chúng được thi công bằng các biện pháp như thay – rung (vibro-replacement), cọc cát đầm (compser (sand compaction
- piles), cọc đá đóng (rammed stone colums) và thậm chí đầm nặng (heavy tamping).Cọc đá đóng đồng thời cũng có thêm tác dụng của đầm nặng vì thực chất chúng được chất tải trước. Bảng 1. Phân loại nền đất yếu (Theo Kamon và Bergado, 1991) Công Điều kiện nền N-value qu (kPa) qc (kPa) Hàm lượng nước trình đ ất (SPT) (%) Đường A: Rất yếu
- Thời gian cải Tuỳ thuộc Tương đối ngắn Dài hạn Dài hạn thiện tuổi thọ hạn Đất hữu cơ của cọc Đất sét nguồn gốc núi lửa Đất có tính dẻo cao Đất có tính dẻo thấp Đất bột Đất cát Đất cuội sỏi Trạng thái của đát được cải Xi măng hoá (Thay thiện Đất chặt hơn, Đất chặt hơn, Tương tác đổi về trạng thái tăng tỷ trọng tăng tỷ trọng do giữa đất của đất) do giảm hệ giảm hệ số lỗ và cọc số lỗ rỗng rỗng (Thay đổi (Không có (Thay đổi về về trạng thái thay đổi trạng thái đất) về trạng đất) thái của đất) Phương pháp thi công cọc vật liệu rời Trên thế giới có khá nhiều phương pháp thi công cọc vật liệu rời, một số sẽ đuợc giới thiệu ở phần dưới đây: Đầm rung Phương pháp đầm rung làm tăng tỷ trọng của các loại đất rời dạng hạt bằng cách dùng một thiết bị gọi là “vibroflot” chìm dần vào trong đất dưới sức nặng bản thân, đầm và rung cùng với nước ( Baumann and Bauer, 1974; Engelhardt and Kirsch, 1977). Sau khi đạt tới một độ sâu nhất định vibroflot được rút ra, cát được đổ thêm vào và được đầm. Quá trình cứ thế tiếp tục để cuối cùng có được Cọc vật liệu rời. Phương pháp Vibro-Compozer Phương pháp này rất phổ biến ở Nhật Bản cho các loại đất sét yếu với gương nước ngầm cao (Aboshi et al. 1979; Aboshi and Suematsu, 1985; Barksdale, 1981). Trình tự thi công tạo thành cọc thường gọi là cọc đầm cát. Trước hết người ta ấn một ống chống xuống đến độ sâu dự kiến bằng cách dùng một búa nặng vừa rung vừa đóng ở đầu ống chống. Sau đó đổ cát vào ống chống và rút dần ống chống ra bằng cách dùng một búa rung ở đáy ống. Cứ tiếp tục như thế cho đến khi tạo được một cọc vât liệu rời được đầm chặt.
- Phương pháp Cased Borehole (đầm trong lỗ khoan có ống chống) Cọc được thi công bằng cách dùng một quả tạ nặng đầm vật liệu rời trong một lỗ đã khoan trước (thường nặng 15-20kN) từ độ cao khoảng 1.0-1.5m.Phương pháp này khá rẻ và có thể thay cho biện pháp đầm rung. Tu nhiên phương pháp này gây ra xáo động nền đất và do đó khả năng ứng dụng có thể hạn chế đối với các loại đất nhạy cảm. Bảng 3. Ước tính khả năng chịu tải tối đa (Aboshi and Suematsu, 1985) Kiểu Công thức tính Tài liệu phá tham hủy khảo ( qult = γ c zk pc + 2co k pc ) 1 + sin Φ 1− sin Φ s Greenw ood s (1970) ( qult = Fc1C o + Fq1Qo ) 1 + sin Φ 1 − sin Φ s Datye s and Phình 1 + sin Φ s Nagaraj qult = ( σ ro + 4C o ) u (1975) 1 − sin Φ s Hughes qult = 1 + sin Φ s 1 − sin Φ s ( 4C o +σ ro + K o q s ) ( W B ) 2 + and Withers (1 − W B ) 2 ) qs (1974) Madhav et al. (1979) 1 qult = CoNc + γ c BN γ + γ c D f N q Madhav 2 and 1 qult = γ c B tan ψ + 2 C o tan ψ + (1 − a ) C o tanψ Vitkar 3 2 2 (1978) Cắ t ψ = 45 0 + tan µ s a s tan Φ s −1 ( ) Barlsdal e and 2 Bachus (1083) qult = (1-as) Co + ( γ s z + µ sσ 2 ) as tan Φ s cos2 θ Mặ t 1 Aboshi trượt µs = et al. 1 + (n − 1)a s (1979) Phương pháp thay - rung (Vibro - Replacement Method) Dùng để cải thiện các loại đất dính bằng cách sử dụng thiết bị giống như đầm rung. Có thể thi công khô hoặc ướt. Trong thi công ướt, đầu tiên tạo một hố bằng cách dùng vibroflot và nước để đạt tới độ sâu cần thiết. Sau đó rút vibroflot ra, tạo nên một lỗ không chống lớn hơn so với bản thân đầm. Sau đó làm sạch hố và đổ cuội sỏi vào. Thi công khô chỉ khác ở chỗ không dùng nước phun trong quá trình tạo lỗ khoan.
- Khả năng chịu tải tối đa (Ultimate Bearing Capacity) của cọc vật liệu rời đơn chiếc. Cọc vật liệu rời thường được thi công xuyên qua lớp đất yếu tới tận lớp đất chịu lực. Nhưng chúng cũng có thể dùng như cọc masát, với mũi cọc kết thúc trong lớp đất yếu nhưng ở độ sâu nơi đất có thể đạt sức bền tương đối. Cọc vật liệu rời có thể bị phá huỷ theo kiểu cọc đơn hoặc nhóm. Có các cơ chế phá huỷ cọc đơn. Cọc đơn vật liệu rời thường bị phá huỷ theo hai kiểu (c) va (a).Kiểu phá huỷ (c) xác định khả năng chịu tải tối đa của cọc vật liệu rời ngắn, tựa trên lớp đất yếu đến cứng vừa (mũi cọc nằm trong đất yếu).Kiểu phá huỷ (a) thường gặp ở các cọc vật liệu rời dài tựa trên lớp đất cứng. Ứng suất bao quanh cọc vật liệu rời thường được lấy bằng lực kháng bị động tối đa nền đất có thể đạt được khi cọc bị phình ra. Hầu hết các ước tính hiện nay về khả năng chịu tải tối đa của cọc đơn vật liệu rời đều dựa trên các giả định trên. Bảng 3 liệt kê các phương pháp ước tính khả năng chịu tải tối đa cho các kiểu phá huỷ (a), (b), (c) theo Aboshi and Suematsu. Khả năng chịu nén tối đa của cọc vật liệu rời, P* (=4Pult/πd2cu), tính theo cơ chế xuyên thủng tăng tuyến tính theo L/d. Theo cơ chế phình nó không đổi theo chiều dài cọc nhưng tăng theo các giá trị Φg và G/cu . Khả năng chịu tải của cọc ngắn tính theo cơ chế phá huỷ xuyên thủng còn đối với các cọc dài tính theo cơ chế phình. Sự thay đổi của chiều dài cọc theo Φg và G/cu theo đó cọc chuyển từ cơ chế phá huỷ xuyên thủng sang cơ chế phình. Chiều dài tới hạn chuẩn hoá (L/d) cr, tăng theo Φg của vật liệu rời tạo cọc và tỷ số G/cu của đất sét yếu. Neo cọc vật liệu rời Một kỹ thuật mới gọi là “neo cọc vật liệu rời” (GPA) đã phát triển nhằm giúp cọc kháng lại lực đẩy nổi cùng với lực nén tác dụng lên nó. Đó là cọc vật liệu rời có để bê tông, bản thép hoặc lưới địa kỹ thuật, gắn với một sợi dây cáp hoặc kim loại tác động lực kéo. Lực kéo có qua đó được xuống đầu GPA để kháng lại lực đẩy nổi. Công năng của cọc được cải thiện nhờ có neo đặt dưới đáy cọc. Lực kháng đẩy nổi phụ thuộc vào (i) trọng lượng của cọc và (ii) lực kháng cắt dọc theo giao diện đất - cọc. Phani Kumar et al. (2000&2004) đã báo cáo kết quả thí nghiệm trên các mô hình nhỏ của neo cọc vật liệu rời chịu lực kéo kháng lại hiện tượng đẩy nổi trong đất tương nở. Đất được xử lý như vậy tự điều chỉnh để thích nghi với các biến đổi về độ ẩm tốt hơn so với đất không được xử lý, do cọc có tính thấm cao. Lực kháng nổi tối đa và biến dạng khi bị phá huỷ đều tăng lên khi hệ số embedment ratio tăng ( tỷ phần giữa lượng cọc đưa thêm vào và đất nền). Các kết cấu gia cường đất kiểu như vậy(được gọi là các geopier) đang được sử dụng ngày càng phổ biến để ổn định nền đất (White et al, 2001), kiểm soát lún và bùng nền. Lillis (2004) cũng báo cáo về kết quả thí nghiệm hiện trường về khả năng kháng nồi của các GPA. Kumer et al. (2003&2004) và Rajan et al (2000) cũng trình bày một số kết quả thí nghiệm trong phòng và ngoài hiện trường về khả năng kháng nổi của GPA trong đất dính và đất không dính. Đối với cơ chế phá huỷ đâm thủng, tải trọng tối đa Pult của GPA là tổng lực kháng cắt được huy động dọc theo chu vi trên suốt chiều dài cọc cộng với trọng lượng của vật liệu tạo cọc: π .d 2 Pult = π.d.L.cu + .L.γ gp 4
- Còn đối với cơ chế phá huỷ phình: π .d 2 Pult = .N Φ { cu .N c + σ ho } * 4 Phá huỷ được cho là xảy ra tại 1/2 đường kính cọc tính từ mũi cọc, chứ không phải tính từ đầu cọc như trong trường hợp cọc vật liệu rời chịu nén. Lực kháng kéo tối đa của GPA được tính cho cả hai cơ chế phá huỷ đâm thủng và phình bằng cách sử dụng phương trình (*) và (**) cho cùng một khoảng tham số như khi tính khả năng chịu nén tối đa. Lực kháng kéo tối đa của GPA đối với cơ chế phá huỷ đâm thủng phụ thuộc vào G/cu và Φg nhưng tăng tuyến tính theo tỷ số L/d. Khả năng kháng phình của cọc GPA phụ thuộc vào G/cu , Φg và L/d vì hiện tượng này có thể xảy ra gần mũi cọc chứ không phải gần đầu cọc như trong trường hợp cọc chịu nén. Biến thiên của P* theo L/d đối với các gọc Φg khác nhau và G/cu cho thấy kiểu phá huỷ đâm thủng giống như trong trường hợp cọc vật liệu rời chịu nén chủ yếu xảy ra với L/d nhỏ và mọi Φg trong khi kiểu phá huỷ phình khống chế khả năng chịu kéo tối đa khi L/d và góc kháng kéo đều tăng lên. Trong khi khả năng chịu kéo tối đa trong cơ chế phá huỷ đâm thủng khá nhạy cảm đối với tỷ số L/d thì nó lại tăng lên từ từ theo L/d trong cơ chế phá huỷ phình. Các giá trị L/d tại đó phá huỷ chuyển từ kiểu đâm thủng sang kiểu phình được gọi là tỷ số chiều dài tới hạn (L/d)cr. Khả năng chịu tải tối đa của nhóm cọc vật liệu rời Nhìn chung để đánh giá khả năng chịu tải tối đa của nhóm cọc rời người ta giả thiết rằng góc nội ma sát của đất dính xung quanh cọc và lực dính kết trong cọc rời là không đáng kể. Ngoài ra còn giả thiết thêm rằng cả cọc rời lẫn đất dính huy động tối đa sức bền. Nhóm cọc được giả thiết là chịu tải bởi một móng cứng.Theo đề xuất của Barksdale and Bachus (1983) khả năng chịu tải tối đa của nhóm cọc rời được xác định bởi hai đường bao phá huỷ tuyến tính tiệm cận với bề mặt phá huỷ. Với các thông số như ứng suất tối đa thẳng đứng qult , ứng suất bao quanh σ3, là các ứng suất pháp chính, để nêm phá huỷ đạt trạng thái cân bằng cần: qult = σ3 tan2 β + 2cavg tanβ Where γ B tan β σ3 = c + 2c 2 Φ avg β= 45 + 2 Φavg = tan-1( µ s a s tan Φ s ) cavg = (1-as)c Trong đó: γc = dung trọng ướt hoặc dung trọng bão hòa của đất dính; B= chiều rộng móng, β = góc nghiêng của bề mặt phá hủy, c = sức kháng cắt không thoát nước trong
- đất dính chưa được gia cường, Φs= góc nội ma sát của đất rời dạng hạt, Φavg = góc nội ma sát trung bình tổng hợp, cavg = lực dính trung bình tổng hợp khi xảy ra phá hủy. Cách tiếp cận trên chưa xem xét khả năng phá huỷ phình cục bộ của từng cọc. Do vậy nó chỉ áp dụng được đối với các loại đất dính tương đối chắc khoẻ với sức bền không thoát nước lớn hơn 30-40kN/m2 . Tuy nhiên, cách này cũng có ích trong việc ước tính các hiệu quả tương đối đến các thông số khả năng chịu tải tối đa thiết kế, thí dụ như đường kính cọc, khoảng cách giữa các cọc, gia tăng sức bền do cố kết và góc nội ma sát. Đối với các loại đất dính yếu và rất yếu, khả năng của nhóm cọc được ước tính bằng cách sử dụng khả năng chịu tải của một cọc đơn nhân với số cọc trong nhóm (Barksdale and Bachus, 1983). Khả năng chịu tải tối đa của một cọc đơn được tính theo công thức: qult = c N1c Trong đó: N1c = hệ số khả năng chịu tải tổng hợp của cọc vật liệu rời thay đổi từ 18 đến 22. Tính lún đối với nền đất gia cường bằng cọc vật liệu rời Nhìn chung các phương pháp tính lún đối với kiểu nền đất kể trên đều giả thiết một bề mặt chịu tải rộng vô cùng, được gia cường với các cọc rời có đường kính và khoảng cách không đổi. Khi đó giả thiết về một nền đơn vị lý tưởng, chịu tải của một tấm bản cứng được coi là phù hợp và tương đương với thí nghịêm cố kết một chiều. Nền đơn vị được giới hạn bởi một bức tường cứng không có ma sát và biến dạng theo chiều thẳng đứng tại bất kỳ mặt bằng nào cũng đều như nhau. Một số phương pháp tính lún cho nền gia cường được nêu ở Bảng 4. Vật liệu sử dụng trong cột đá là sỏi hoặc cát sắc cạnh lèn chặt. Thiết kế tối ưu của cột đá đòi hỏi phải có một hệ số tập trung ứng suất tối ưu Do đó ứng suất lên cột đá theo chiều thẳng đứng thường gần đạt tới sức bền cực đại của nó và vật liệu bị nở ra. Mô hình do Van Impe và Madhav (1992) đề xuất đã tính tới độ nở ra của vật liệu rời tạo cọc và tính đối xứng dọc trục của vấn đề. Kết quả đạt được cho thấy ảnh hường tích cực của hiện tượng nở đối với giảm lún. Thậm chí chỉ cần nở ra khoảng 0,5% cũng có thể giảm lún đáng kể so với trường hợp vật liệu tạo cọc biến dạng nhưng không thay đổi thể tích. Hệ số giảm β khá phù hợp với hệ số do Greenwood (1970), Priebe (1976), Balam & Booker đề xuất. Còn theo lý thuyết của Van Impe và Madhav nó cao hơn so với đề xuất của Priebe và Balaam và Polous, nhưng dao động trong khoảng như Greenwood đề xuất. Bảng 4. Tính lún đối với nền gia cường (Aboshi and Suemastsu, 1985) Phươn Công thức Tài liệu g pháp tham khảo Phươn St = mv ( νc σ) H g pháp 1 Aboshi cân R= νc = et al. 1 + (n − 1)a s
- bằng (1979) Phươn 1 1 / 2 + f (ν , a s ) g pháp = 1 + as − 1 Priebe R (k A ) s f (ν , a s ) Priebe 1 −ν 2 (1 − 2ν )(1 − a s ) (K ) =tan 2 (450- Φ (1976) f (ν , a s ) = 2 As ) 1 − ν − 2ν 1 − 2ν + a s 2 Phươn ν2 σ Van g pháp St = RH (1 - ν )(1 −2 ) Impe 1 −ν 2 E tường and Do R = f (a s , Φ s ,ν , σ / E ) vật Beer liệu (1983) rời Phươn Cc ( P ) + ∆p Goughn g pháp εy = (1-as) log10 0 vc our 1 + e0 ( p 0 )νc chất (1983) tải dần (∆p ) *νc ∆p = [1 + K + Ko( KifK > 1] 1 + 2K o Bauman (1 if K ≤ 1) n and 1 1 as Bauer K= Ko + − 1 εν 1 − ε v 1 − as (1074) (∆p ) * + ( Po)νc a s − K 0 ( Po) vc a s tan 2 (45 + Φ s / 2) ( ∆p ) * = vc v KFa s tan 2 (45 + Φ s / 2) εv Hughes et al. Rp = Cc ( P0 )νc + (∆p ) * v (1975) 1 + e0 log10 ( P0 ) vc Phươn [ K E ]{∆σ ( m−1) } = {{∆FE } + { K c( m ) }{∆σ ( m) } + {∆F ( m) DN } } Alaam g pháp and phần Poulos tử hữu hạn Kết luận Cọc cát/ cột đá là một trong những biện pháp gia cường nền đất vạn năng nhất. Có thể thi công chúng nhằm gia cường nhiều loại nền đất khác nhau, bằng nhiều kỹ thuật khác nhau như đầm rung (vibro-compaction), thay – rung (vibro-Replacement), đầm trong lỗ khoan (rammed granular piles), vibro-compozer, vibro-wings, sand or gravel compaction piling...Nếu đất được cải thiện theo phương thức gia cường, làm chặt và tiêu thoát nước. Chúng đều tỏ ra có hiệu quả trong điều kiện bình thường và có động đất.
- Khả năng chịu tải của nền được cải thiện từ 50 đến 100% trong khi lún giảm đi 3- 4lần. Đáng lưu ý là lún hầu như chỉ xảy ra trong giai đoạn chất tải, và còn lại rất nhỏ ở giai đoạn sau thi công. Trước kia cọc vật liệu rời được dùng để chịu các tại trọng nén. Tuy nhiên chỉ cần cải tiến đôi chút bằng cách lót đáy một tấm bản thép/bê tông/lưới địa kỹ thuật và neo lại bằng một sợi dây thép hoặc cáp là các lực kéo có thể được chuyền tới đáy cọc và khi đó vật liệu rời trở thành một cái neo cọc vật liệu rời, làm việc có khi còn hay hơn cọc đặc vì nó thường chỉ bị phình ra ở mũi cọc trong khi khả năng chịu tải lại cao hơn đáng kể. Neo cọc vật liệu rời GPA trở thành có thể nén được, biến dạng triệt giảm ở phần sâu và chỉ có một phần biến dạng rất nhỏ xảy ra ở gần đầu cọc. Nền đất được gia cường bằng cọc vật liệu rời, nếu chịu tải đồng nhất thông qua một lớp vật liệu rời nửa cứng chỉ xảy ra lún rất ít và rất đều so với nền đất chưa được xử lý. Nếu huy động thêm được hiện tượng nở ra của vật liệu làm cọc thì nền đất còn trở nên cứng chắc hơn là lún ít hơn nữa. Theo Madhira R. Madhav-J.N.T.University, Hyderabad, India (Nguồn tin: Tuyển tập Bài giảng về Xử lý đất yếu và kỹ thuật nền móng công trình, 5/2007)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Tài liệu kiểm tra giám sát chất lượng vật liệu xây dựng trong thi công và nghiệm thu công trình
110 p | 902 | 584
-
Quy định kỹ thuật thi công và nghiệm thu cọc khoan nhồi-22TCN
22 p | 874 | 274
-
THIẾT KẾ THI CÔNG VẬN TẢI CÔNG TRƯỜNG
7 p | 185 | 87
-
Ebook Thiết kế - Thi công - Giám sát Công trình hầm giao thông: Phần 1 - GS.TS. Nguyễn Viết Trung, ThS. Trần Thu Hằng
116 p | 128 | 84
-
Ebook Tính toán thiết kế các công trình phụ tạm để thi công cầu: Phần 2 - Phạm Huy Chính
107 p | 148 | 84
-
Ebook Thiết kế - Thi công - Giám sát Công trình hầm giao thông: Phần 2 - GS.TS. Nguyễn Viết Trung, ThS. Trần Thu Hằng
103 p | 98 | 62
-
Giáo trình Kỹ thuật phòng chống cháy, nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng: Phần 1
96 p | 75 | 39
-
Giáo trình Kỹ thuật phòng chống cháy, nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng: Phần 2
42 p | 58 | 32
-
Ebook Quy trình thiết kế và thi công tấm vật liệu 3D: Phần 2 - TS. Ngô Quang Tường
101 p | 44 | 26
-
Ebook Kỹ thuật phòng chóng cháy nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng
136 p | 41 | 20
-
Lựa chọn vật liệu để thiết kế cấp phối bê tông tự lèn
6 p | 64 | 17
-
Thiết kế & thi công nội thất nhà ở nội thất đẹp
7 p | 55 | 13
-
Tiêu chuẩn Quốc gia: TCVN 9844: 2013
17 p | 52 | 12
-
Thiết kế thi công kiến trúc nhà ở
8 p | 36 | 10
-
Thiết kế thi công kiến trúc nhà hàng
8 p | 42 | 4
-
Thiết kế thi công hoàn thiện nội thất văn phòng công ty Minh Trang
11 p | 29 | 2
-
Nguyên nhân những hư hỏng thường gặp và các vấn đề cần lưu ý khi thiết kế, thi công và quản lý công trình bảo vệ bờ biển tỉnh Bình Thuận
7 p | 43 | 2

markdown:
# Cọc vật liệu rời - Thiết kế, thi công và hành vi
Chia sẻ: Hoangquoc Vinh | Ngày: | Loại File: DOC | Số trang:9
lượt xem 63
download
![](http://image1.tailieu.vn/document/thumbnail/2010/20100923/hoangquocvinh/80x100/1532_coc_vat_lieu_roi_1553.jpg)
##
Cọc vật liệu rời - Thiết kế, thi công và hành vi
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static1.tailieu.vn/b2013az/templates/version1/default/images/down16x21.png)
Cọc vật liệu rời lúc đầu được phát triển, như mọi loại cọc khác, chủ yếu nhằm để đỡ tải trọng nén xuống. Tuy nhiên, sức chịu tải của cọc đơn hoặc một nhóm Cọc vât liệu rời khá hạn chế vì chúng hay bị phình. Có thể làm tăng sức chịu tải của cọc vật liệu rời bằng cách gia cường thêm vải hoặc lưới địa kỹ thuật, ở dạng các tấm hoặc bao nhằm hạn chế hiện tượng đầu cọc bị phình ra....
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Cọc vật liệu rời - Thiết kế, thi công và hành vi
- Cọc vật liệu rời - Thiết kế, thi công và hành vi Tóm tắt Cọc vật liệu rời lúc đầu được phát triển, như mọi loại cọc khác, chủ yếu nhằm để đỡ tải trọng nén xuống. Tuy nhiên, sức chịu tải của cọc đơn hoặc một nhóm Cọc vât liệu rời khá hạn chế vì chúng hay bị phình. Có thể làm tăng sức chịu tải của cọc vật liệu rời bằng cách gia cường thêm vải hoặc lưới địa kỹ thuật, ở dạng các tấm hoặc bao nhằm hạn chế hiện tượng đầu cọc bị phình ra. Một nhóm nhỏ cọc vật liệu rời có thể bị phá huỷ theo nhiều kiểu, tư kiểu đâm thủng đơn giản đối với các cọc ngắn, kiểu phá huỷ do nén dọc trục đối với các cọc dài, đến kiểu bị oằn do cắt của các Cọc vật liệu rời ngoại vi. Nhưng chúng nhiều khi lại là một giải pháp kinh tế thay cho phương án nhóm cọc khá đắt tiền. Bằng đôi chút cải tiến đơn giản, như đặt một tấm thép, để bê tông hoặc một tấm lưới địa kỹ thuật ở đáy, thêm một sợi cáp hoặc dây thép ở chân móng, Cọc vật liệu rời có thể chịu được các lực nhổ hoặc đẩy lên. Phản ứng của các neo làm bằng Cọc vật liệu rời (GPA) hay hơn nhiều so với các loại cọc đặc vì tải trọng được truyền trực tiếp xuống mũi cọc, nơi khả năng chống phình của cọc là cao nhất. Cải tiến này còn tỏ ra hiệu quả hơn đối với các loại cọc đất cố kết bình thường, vốn có sức bền không thoát nước tăng dần theo độ sâu. Bài này tóm tắt và trình bày khái quát những tiến bộ liên quan đến Cọc vật liệu rời. Giới thiệu Nhìn chung, khái niệm nền đất yếu bao hàm các loại đất sét yếu, đất với tỷ phần hạt mịn, như bột, cao hoặc đất sét chứa hàm lượng nước cao, đất chứa nhiều than bùn và các tập cát lỏng ở gần hoặc dưới mực nước ngầm. Đối với các loại đất dạng sét, “độ yếu” của chúng có thể đánh giá trên cơ sở sức kháng nén không nở hông, qu . Mặt khác, giá trị SPT N cũng được dùng để đánh giá độ chắc và tỷ trọng tương đối của nền đất. Bảng 1 phân loại nền đất yếu theo tính chất công trình xây dựng trên chúng trên cơ sở các phương pháp đánh giá kể trên. Xét các yếu tố như tầm quan trọng của công trình, tải trọng, điều kiện nền đất, thời gian xây dựng... có thể thấy rõ tầm quan trọng của việc chọn lựa phương pháp thích hợp đối với từng loại đất cụ thể như nêu ở Bảng 2. Đối với đất yếu và đất kết dính trong điều kiện đang lún, có thể áp dụng các biện pháp cải thiện nền đất như Cọc vật liệu rời nện, thêm phụ gia (phương pháp trộn sâu hoặc thoát nước bằng bấc thấm. Đối với các loại nền cát rời có thể áp dụng các biện pháp đầm hiện trường như đầm rung, đầm cộng hưởng và đầm rung nổi (vibrofloatation). Đối với các nền đất đắp nổi cao trên mặt đất, có thể áp dụng các biện pháp gia cường đất, ổn định cơ học (MSE) hoặc sử dụng các vật liệu địa kỹ thuật nhẹ. Trong số các biện pháp cải thiện nền đất ngoài trời, có lẽ cọc cát hoặc đá là vạn năng nhất. Chúng trước hết giúp gia cường nền và tiêu thoát nước, sau đó còn giúp cải thiện sức bền và đặc điểm biến dạng của đất yếu sau khi thi công và tái cố kết. Cọc vật liệu rời, thay thế cho một phần đất yếu lấy đi, làm tăng dung trọng của đất, tiêu thoát nhanh lượng áp lực nước lỗ rỗng dư, làm việc như những kết cấu khoẻ, cứng chắc và chịu được ứng suất cắt lớn hơn. Cọc vật liệu rời có thể áp dụng cho nhiều kiểu loại đất khác nhau, từ các loại cát rời đến đất sét yếu và các loại đất hữu cơ. Cọc vật liệu rời rất kinh tế kể cả khi phải chịu tải ở mũi cọc. Chúng được thi công bằng các biện pháp như thay – rung (vibro-replacement), cọc cát đầm (compser (sand compaction
- piles), cọc đá đóng (rammed stone colums) và thậm chí đầm nặng (heavy tamping).Cọc đá đóng đồng thời cũng có thêm tác dụng của đầm nặng vì thực chất chúng được chất tải trước. Bảng 1. Phân loại nền đất yếu (Theo Kamon và Bergado, 1991) Công Điều kiện nền N-value qu (kPa) qc (kPa) Hàm lượng nước trình đ ất (SPT) (%) Đường A: Rất yếu
- Thời gian cải Tuỳ thuộc Tương đối ngắn Dài hạn Dài hạn thiện tuổi thọ hạn Đất hữu cơ của cọc Đất sét nguồn gốc núi lửa Đất có tính dẻo cao Đất có tính dẻo thấp Đất bột Đất cát Đất cuội sỏi Trạng thái của đát được cải Xi măng hoá (Thay thiện Đất chặt hơn, Đất chặt hơn, Tương tác đổi về trạng thái tăng tỷ trọng tăng tỷ trọng do giữa đất của đất) do giảm hệ giảm hệ số lỗ và cọc số lỗ rỗng rỗng (Thay đổi (Không có (Thay đổi về về trạng thái thay đổi trạng thái đất) về trạng đất) thái của đất) Phương pháp thi công cọc vật liệu rời Trên thế giới có khá nhiều phương pháp thi công cọc vật liệu rời, một số sẽ đuợc giới thiệu ở phần dưới đây: Đầm rung Phương pháp đầm rung làm tăng tỷ trọng của các loại đất rời dạng hạt bằng cách dùng một thiết bị gọi là “vibroflot” chìm dần vào trong đất dưới sức nặng bản thân, đầm và rung cùng với nước ( Baumann and Bauer, 1974; Engelhardt and Kirsch, 1977). Sau khi đạt tới một độ sâu nhất định vibroflot được rút ra, cát được đổ thêm vào và được đầm. Quá trình cứ thế tiếp tục để cuối cùng có được Cọc vật liệu rời. Phương pháp Vibro-Compozer Phương pháp này rất phổ biến ở Nhật Bản cho các loại đất sét yếu với gương nước ngầm cao (Aboshi et al. 1979; Aboshi and Suematsu, 1985; Barksdale, 1981). Trình tự thi công tạo thành cọc thường gọi là cọc đầm cát. Trước hết người ta ấn một ống chống xuống đến độ sâu dự kiến bằng cách dùng một búa nặng vừa rung vừa đóng ở đầu ống chống. Sau đó đổ cát vào ống chống và rút dần ống chống ra bằng cách dùng một búa rung ở đáy ống. Cứ tiếp tục như thế cho đến khi tạo được một cọc vât liệu rời được đầm chặt.
- Phương pháp Cased Borehole (đầm trong lỗ khoan có ống chống) Cọc được thi công bằng cách dùng một quả tạ nặng đầm vật liệu rời trong một lỗ đã khoan trước (thường nặng 15-20kN) từ độ cao khoảng 1.0-1.5m.Phương pháp này khá rẻ và có thể thay cho biện pháp đầm rung. Tu nhiên phương pháp này gây ra xáo động nền đất và do đó khả năng ứng dụng có thể hạn chế đối với các loại đất nhạy cảm. Bảng 3. Ước tính khả năng chịu tải tối đa (Aboshi and Suematsu, 1985) Kiểu Công thức tính Tài liệu phá tham hủy khảo ( qult = γ c zk pc + 2co k pc ) 1 + sin Φ 1− sin Φ s Greenw ood s (1970) ( qult = Fc1C o + Fq1Qo ) 1 + sin Φ 1 − sin Φ s Datye s and Phình 1 + sin Φ s Nagaraj qult = ( σ ro + 4C o ) u (1975) 1 − sin Φ s Hughes qult = 1 + sin Φ s 1 − sin Φ s ( 4C o +σ ro + K o q s ) ( W B ) 2 + and Withers (1 − W B ) 2 ) qs (1974) Madhav et al. (1979) 1 qult = CoNc + γ c BN γ + γ c D f N q Madhav 2 and 1 qult = γ c B tan ψ + 2 C o tan ψ + (1 − a ) C o tanψ Vitkar 3 2 2 (1978) Cắ t ψ = 45 0 + tan µ s a s tan Φ s −1 ( ) Barlsdal e and 2 Bachus (1083) qult = (1-as) Co + ( γ s z + µ sσ 2 ) as tan Φ s cos2 θ Mặ t 1 Aboshi trượt µs = et al. 1 + (n − 1)a s (1979) Phương pháp thay - rung (Vibro - Replacement Method) Dùng để cải thiện các loại đất dính bằng cách sử dụng thiết bị giống như đầm rung. Có thể thi công khô hoặc ướt. Trong thi công ướt, đầu tiên tạo một hố bằng cách dùng vibroflot và nước để đạt tới độ sâu cần thiết. Sau đó rút vibroflot ra, tạo nên một lỗ không chống lớn hơn so với bản thân đầm. Sau đó làm sạch hố và đổ cuội sỏi vào. Thi công khô chỉ khác ở chỗ không dùng nước phun trong quá trình tạo lỗ khoan.
- Khả năng chịu tải tối đa (Ultimate Bearing Capacity) của cọc vật liệu rời đơn chiếc. Cọc vật liệu rời thường được thi công xuyên qua lớp đất yếu tới tận lớp đất chịu lực. Nhưng chúng cũng có thể dùng như cọc masát, với mũi cọc kết thúc trong lớp đất yếu nhưng ở độ sâu nơi đất có thể đạt sức bền tương đối. Cọc vật liệu rời có thể bị phá huỷ theo kiểu cọc đơn hoặc nhóm. Có các cơ chế phá huỷ cọc đơn. Cọc đơn vật liệu rời thường bị phá huỷ theo hai kiểu (c) va (a).Kiểu phá huỷ (c) xác định khả năng chịu tải tối đa của cọc vật liệu rời ngắn, tựa trên lớp đất yếu đến cứng vừa (mũi cọc nằm trong đất yếu).Kiểu phá huỷ (a) thường gặp ở các cọc vật liệu rời dài tựa trên lớp đất cứng. Ứng suất bao quanh cọc vật liệu rời thường được lấy bằng lực kháng bị động tối đa nền đất có thể đạt được khi cọc bị phình ra. Hầu hết các ước tính hiện nay về khả năng chịu tải tối đa của cọc đơn vật liệu rời đều dựa trên các giả định trên. Bảng 3 liệt kê các phương pháp ước tính khả năng chịu tải tối đa cho các kiểu phá huỷ (a), (b), (c) theo Aboshi and Suematsu. Khả năng chịu nén tối đa của cọc vật liệu rời, P* (=4Pult/πd2cu), tính theo cơ chế xuyên thủng tăng tuyến tính theo L/d. Theo cơ chế phình nó không đổi theo chiều dài cọc nhưng tăng theo các giá trị Φg và G/cu . Khả năng chịu tải của cọc ngắn tính theo cơ chế phá huỷ xuyên thủng còn đối với các cọc dài tính theo cơ chế phình. Sự thay đổi của chiều dài cọc theo Φg và G/cu theo đó cọc chuyển từ cơ chế phá huỷ xuyên thủng sang cơ chế phình. Chiều dài tới hạn chuẩn hoá (L/d) cr, tăng theo Φg của vật liệu rời tạo cọc và tỷ số G/cu của đất sét yếu. Neo cọc vật liệu rời Một kỹ thuật mới gọi là “neo cọc vật liệu rời” (GPA) đã phát triển nhằm giúp cọc kháng lại lực đẩy nổi cùng với lực nén tác dụng lên nó. Đó là cọc vật liệu rời có để bê tông, bản thép hoặc lưới địa kỹ thuật, gắn với một sợi dây cáp hoặc kim loại tác động lực kéo. Lực kéo có qua đó được xuống đầu GPA để kháng lại lực đẩy nổi. Công năng của cọc được cải thiện nhờ có neo đặt dưới đáy cọc. Lực kháng đẩy nổi phụ thuộc vào (i) trọng lượng của cọc và (ii) lực kháng cắt dọc theo giao diện đất - cọc. Phani Kumar et al. (2000&2004) đã báo cáo kết quả thí nghiệm trên các mô hình nhỏ của neo cọc vật liệu rời chịu lực kéo kháng lại hiện tượng đẩy nổi trong đất tương nở. Đất được xử lý như vậy tự điều chỉnh để thích nghi với các biến đổi về độ ẩm tốt hơn so với đất không được xử lý, do cọc có tính thấm cao. Lực kháng nổi tối đa và biến dạng khi bị phá huỷ đều tăng lên khi hệ số embedment ratio tăng ( tỷ phần giữa lượng cọc đưa thêm vào và đất nền). Các kết cấu gia cường đất kiểu như vậy(được gọi là các geopier) đang được sử dụng ngày càng phổ biến để ổn định nền đất (White et al, 2001), kiểm soát lún và bùng nền. Lillis (2004) cũng báo cáo về kết quả thí nghiệm hiện trường về khả năng kháng nồi của các GPA. Kumer et al. (2003&2004) và Rajan et al (2000) cũng trình bày một số kết quả thí nghiệm trong phòng và ngoài hiện trường về khả năng kháng nổi của GPA trong đất dính và đất không dính. Đối với cơ chế phá huỷ đâm thủng, tải trọng tối đa Pult của GPA là tổng lực kháng cắt được huy động dọc theo chu vi trên suốt chiều dài cọc cộng với trọng lượng của vật liệu tạo cọc: π .d 2 Pult = π.d.L.cu + .L.γ gp 4
- Còn đối với cơ chế phá huỷ phình: π .d 2 Pult = .N Φ { cu .N c + σ ho } * 4 Phá huỷ được cho là xảy ra tại 1/2 đường kính cọc tính từ mũi cọc, chứ không phải tính từ đầu cọc như trong trường hợp cọc vật liệu rời chịu nén. Lực kháng kéo tối đa của GPA được tính cho cả hai cơ chế phá huỷ đâm thủng và phình bằng cách sử dụng phương trình (*) và (**) cho cùng một khoảng tham số như khi tính khả năng chịu nén tối đa. Lực kháng kéo tối đa của GPA đối với cơ chế phá huỷ đâm thủng phụ thuộc vào G/cu và Φg nhưng tăng tuyến tính theo tỷ số L/d. Khả năng kháng phình của cọc GPA phụ thuộc vào G/cu , Φg và L/d vì hiện tượng này có thể xảy ra gần mũi cọc chứ không phải gần đầu cọc như trong trường hợp cọc chịu nén. Biến thiên của P* theo L/d đối với các gọc Φg khác nhau và G/cu cho thấy kiểu phá huỷ đâm thủng giống như trong trường hợp cọc vật liệu rời chịu nén chủ yếu xảy ra với L/d nhỏ và mọi Φg trong khi kiểu phá huỷ phình khống chế khả năng chịu kéo tối đa khi L/d và góc kháng kéo đều tăng lên. Trong khi khả năng chịu kéo tối đa trong cơ chế phá huỷ đâm thủng khá nhạy cảm đối với tỷ số L/d thì nó lại tăng lên từ từ theo L/d trong cơ chế phá huỷ phình. Các giá trị L/d tại đó phá huỷ chuyển từ kiểu đâm thủng sang kiểu phình được gọi là tỷ số chiều dài tới hạn (L/d)cr. Khả năng chịu tải tối đa của nhóm cọc vật liệu rời Nhìn chung để đánh giá khả năng chịu tải tối đa của nhóm cọc rời người ta giả thiết rằng góc nội ma sát của đất dính xung quanh cọc và lực dính kết trong cọc rời là không đáng kể. Ngoài ra còn giả thiết thêm rằng cả cọc rời lẫn đất dính huy động tối đa sức bền. Nhóm cọc được giả thiết là chịu tải bởi một móng cứng.Theo đề xuất của Barksdale and Bachus (1983) khả năng chịu tải tối đa của nhóm cọc rời được xác định bởi hai đường bao phá huỷ tuyến tính tiệm cận với bề mặt phá huỷ. Với các thông số như ứng suất tối đa thẳng đứng qult , ứng suất bao quanh σ3, là các ứng suất pháp chính, để nêm phá huỷ đạt trạng thái cân bằng cần: qult = σ3 tan2 β + 2cavg tanβ Where γ B tan β σ3 = c + 2c 2 Φ avg β= 45 + 2 Φavg = tan-1( µ s a s tan Φ s ) cavg = (1-as)c Trong đó: γc = dung trọng ướt hoặc dung trọng bão hòa của đất dính; B= chiều rộng móng, β = góc nghiêng của bề mặt phá hủy, c = sức kháng cắt không thoát nước trong
- đất dính chưa được gia cường, Φs= góc nội ma sát của đất rời dạng hạt, Φavg = góc nội ma sát trung bình tổng hợp, cavg = lực dính trung bình tổng hợp khi xảy ra phá hủy. Cách tiếp cận trên chưa xem xét khả năng phá huỷ phình cục bộ của từng cọc. Do vậy nó chỉ áp dụng được đối với các loại đất dính tương đối chắc khoẻ với sức bền không thoát nước lớn hơn 30-40kN/m2 . Tuy nhiên, cách này cũng có ích trong việc ước tính các hiệu quả tương đối đến các thông số khả năng chịu tải tối đa thiết kế, thí dụ như đường kính cọc, khoảng cách giữa các cọc, gia tăng sức bền do cố kết và góc nội ma sát. Đối với các loại đất dính yếu và rất yếu, khả năng của nhóm cọc được ước tính bằng cách sử dụng khả năng chịu tải của một cọc đơn nhân với số cọc trong nhóm (Barksdale and Bachus, 1983). Khả năng chịu tải tối đa của một cọc đơn được tính theo công thức: qult = c N1c Trong đó: N1c = hệ số khả năng chịu tải tổng hợp của cọc vật liệu rời thay đổi từ 18 đến 22. Tính lún đối với nền đất gia cường bằng cọc vật liệu rời Nhìn chung các phương pháp tính lún đối với kiểu nền đất kể trên đều giả thiết một bề mặt chịu tải rộng vô cùng, được gia cường với các cọc rời có đường kính và khoảng cách không đổi. Khi đó giả thiết về một nền đơn vị lý tưởng, chịu tải của một tấm bản cứng được coi là phù hợp và tương đương với thí nghịêm cố kết một chiều. Nền đơn vị được giới hạn bởi một bức tường cứng không có ma sát và biến dạng theo chiều thẳng đứng tại bất kỳ mặt bằng nào cũng đều như nhau. Một số phương pháp tính lún cho nền gia cường được nêu ở Bảng 4. Vật liệu sử dụng trong cột đá là sỏi hoặc cát sắc cạnh lèn chặt. Thiết kế tối ưu của cột đá đòi hỏi phải có một hệ số tập trung ứng suất tối ưu Do đó ứng suất lên cột đá theo chiều thẳng đứng thường gần đạt tới sức bền cực đại của nó và vật liệu bị nở ra. Mô hình do Van Impe và Madhav (1992) đề xuất đã tính tới độ nở ra của vật liệu rời tạo cọc và tính đối xứng dọc trục của vấn đề. Kết quả đạt được cho thấy ảnh hường tích cực của hiện tượng nở đối với giảm lún. Thậm chí chỉ cần nở ra khoảng 0,5% cũng có thể giảm lún đáng kể so với trường hợp vật liệu tạo cọc biến dạng nhưng không thay đổi thể tích. Hệ số giảm β khá phù hợp với hệ số do Greenwood (1970), Priebe (1976), Balam & Booker đề xuất. Còn theo lý thuyết của Van Impe và Madhav nó cao hơn so với đề xuất của Priebe và Balaam và Polous, nhưng dao động trong khoảng như Greenwood đề xuất. Bảng 4. Tính lún đối với nền gia cường (Aboshi and Suemastsu, 1985) Phươn Công thức Tài liệu g pháp tham khảo Phươn St = mv ( νc σ) H g pháp 1 Aboshi cân R= νc = et al. 1 + (n − 1)a s
- bằng (1979) Phươn 1 1 / 2 + f (ν , a s ) g pháp = 1 + as − 1 Priebe R (k A ) s f (ν , a s ) Priebe 1 −ν 2 (1 − 2ν )(1 − a s ) (K ) =tan 2 (450- Φ (1976) f (ν , a s ) = 2 As ) 1 − ν − 2ν 1 − 2ν + a s 2 Phươn ν2 σ Van g pháp St = RH (1 - ν )(1 −2 ) Impe 1 −ν 2 E tường and Do R = f (a s , Φ s ,ν , σ / E ) vật Beer liệu (1983) rời Phươn Cc ( P ) + ∆p Goughn g pháp εy = (1-as) log10 0 vc our 1 + e0 ( p 0 )νc chất (1983) tải dần (∆p ) *νc ∆p = [1 + K + Ko( KifK > 1] 1 + 2K o Bauman (1 if K ≤ 1) n and 1 1 as Bauer K= Ko + − 1 εν 1 − ε v 1 − as (1074) (∆p ) * + ( Po)νc a s − K 0 ( Po) vc a s tan 2 (45 + Φ s / 2) ( ∆p ) * = vc v KFa s tan 2 (45 + Φ s / 2) εv Hughes et al. Rp = Cc ( P0 )νc + (∆p ) * v (1975) 1 + e0 log10 ( P0 ) vc Phươn [ K E ]{∆σ ( m−1) } = {{∆FE } + { K c( m ) }{∆σ ( m) } + {∆F ( m) DN } } Alaam g pháp and phần Poulos tử hữu hạn Kết luận Cọc cát/ cột đá là một trong những biện pháp gia cường nền đất vạn năng nhất. Có thể thi công chúng nhằm gia cường nhiều loại nền đất khác nhau, bằng nhiều kỹ thuật khác nhau như đầm rung (vibro-compaction), thay – rung (vibro-Replacement), đầm trong lỗ khoan (rammed granular piles), vibro-compozer, vibro-wings, sand or gravel compaction piling...Nếu đất được cải thiện theo phương thức gia cường, làm chặt và tiêu thoát nước. Chúng đều tỏ ra có hiệu quả trong điều kiện bình thường và có động đất.
- Khả năng chịu tải của nền được cải thiện từ 50 đến 100% trong khi lún giảm đi 3- 4lần. Đáng lưu ý là lún hầu như chỉ xảy ra trong giai đoạn chất tải, và còn lại rất nhỏ ở giai đoạn sau thi công. Trước kia cọc vật liệu rời được dùng để chịu các tại trọng nén. Tuy nhiên chỉ cần cải tiến đôi chút bằng cách lót đáy một tấm bản thép/bê tông/lưới địa kỹ thuật và neo lại bằng một sợi dây thép hoặc cáp là các lực kéo có thể được chuyền tới đáy cọc và khi đó vật liệu rời trở thành một cái neo cọc vật liệu rời, làm việc có khi còn hay hơn cọc đặc vì nó thường chỉ bị phình ra ở mũi cọc trong khi khả năng chịu tải lại cao hơn đáng kể. Neo cọc vật liệu rời GPA trở thành có thể nén được, biến dạng triệt giảm ở phần sâu và chỉ có một phần biến dạng rất nhỏ xảy ra ở gần đầu cọc. Nền đất được gia cường bằng cọc vật liệu rời, nếu chịu tải đồng nhất thông qua một lớp vật liệu rời nửa cứng chỉ xảy ra lún rất ít và rất đều so với nền đất chưa được xử lý. Nếu huy động thêm được hiện tượng nở ra của vật liệu làm cọc thì nền đất còn trở nên cứng chắc hơn là lún ít hơn nữa. Theo Madhira R. Madhav-J.N.T.University, Hyderabad, India (Nguồn tin: Tuyển tập Bài giảng về Xử lý đất yếu và kỹ thuật nền móng công trình, 5/2007)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Tài liệu kiểm tra giám sát chất lượng vật liệu xây dựng trong thi công và nghiệm thu công trình
110 p |
902 |
584
-
Quy định kỹ thuật thi công và nghiệm thu cọc khoan nhồi-22TCN
22 p |
874 |
274
-
THIẾT KẾ THI CÔNG VẬN TẢI CÔNG TRƯỜNG
7 p |
185 |
87
-
Ebook Thiết kế - Thi công - Giám sát Công trình hầm giao thông: Phần 1 - GS.TS. Nguyễn Viết Trung, ThS. Trần Thu Hằng
116 p |
128 |
84
-
Ebook Tính toán thiết kế các công trình phụ tạm để thi công cầu: Phần 2 - Phạm Huy Chính
107 p |
148 |
84
-
Ebook Thiết kế - Thi công - Giám sát Công trình hầm giao thông: Phần 2 - GS.TS. Nguyễn Viết Trung, ThS. Trần Thu Hằng
103 p |
98 |
62
-
Giáo trình Kỹ thuật phòng chống cháy, nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng: Phần 1
96 p |
75 |
39
-
Giáo trình Kỹ thuật phòng chống cháy, nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng: Phần 2
42 p |
58 |
32
-
Ebook Quy trình thiết kế và thi công tấm vật liệu 3D: Phần 2 - TS. Ngô Quang Tường
101 p |
44 |
26
-
Ebook Kỹ thuật phòng chóng cháy nổ trong quy hoạch, thiết kế, thi công và sử dụng công trình xây dựng
136 p |
41 |
20
-
Lựa chọn vật liệu để thiết kế cấp phối bê tông tự lèn
6 p |
64 |
17
-
Thiết kế & thi công nội thất nhà ở nội thất đẹp
7 p |
55 |
13
-
Tiêu chuẩn Quốc gia: TCVN 9844: 2013
17 p |
52 |
12
-
Thiết kế thi công kiến trúc nhà ở
8 p |
36 |
10
-
Thiết kế thi công kiến trúc nhà hàng
8 p |
42 |
4
-
Thiết kế thi công hoàn thiện nội thất văn phòng công ty Minh Trang
11 p |
29 |
2
-
Nguyên nhân những hư hỏng thường gặp và các vấn đề cần lưu ý khi thiết kế, thi công và quản lý công trình bảo vệ bờ biển tỉnh Bình Thuận
7 p |
43 |
2

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: application/xhtml+xml

Connection: close

Pragma: no-cache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: TLDEVNamespace=l3qjk850ipj3o2ghtdh7tqgor3; path=/; domain=.tailieu.vn; HttpOnly

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


text:
CTDL 2005 chuong 3
Chia sẻ: Hoang Nguyen | Ngày: | Loại File: PDF | Số trang:14
lượt xem 19
download
CTDL 2005 chuong 3
Hàng đợi
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CTDL 2005 chuong 3
- Chöông 3 – Haøng ñôïi Chöông 3 – HAØNG ÑÔÏI 3.1. Ñònh nghóa haøng Trong caùc öùng duïng maùy tính, chuùng ta ñònh nghóa CTDL haøng laø moät danh saùch trong ñoù vieäc theâm moät phaàn töû vaøo ñöôïc thöïc hieän ôû moät ñaàu cuûa danh saùch (cuoái haøng), vaø vieäc laáy döõ lieäu khoûi danh saùch thöïc hieän ôû ñaàu coøn laïi (ñaàu haøng). Chuùng ta coù theå hình dung CTDL haøng cuõng gioáng nhö moät haøng ngöôøi laàn löôït chôø mua veù, ai ñeán tröôùc ñöôïc phuïc vuï tröôùc. Haøng coøn ñöôïc goïi laø danh saùch FIFO (First In First Out) Hình 3.1- Haøng ñôïi Caùc öùng duïng coù söû duïng haøng coøn phoå bieán hôn caùc öùng duïng coù söû duïng ngaên xeáp, vì khi maùy tính thöïc hieän caùc nhieäm vuï, cuõng gioáng nhö caùc coâng vieäc trong cuoäc soáng, moãi coâng vieäc ñeàu caàn phaûi ñôïi ñeán löôït cuûa mình. Trong moät heä thoáng maùy tính coù theå coù nhieàu haøng ñôïi caùc coâng vieäc ñang chôø ñeán löôït ñöôïc in, ñöôïc truy xuaát ñóa hoaëc ñöôïc söû duïng CPU. Trong moät chöông trình ñôn giaûn coù theå coù nhieàu coâng vieäc ñöôïc löu vaøo haøng ñôïi, hoaëc moät coâng vieäâc coù theå khôûi taïo moät soá coâng vieäc khaùc maø chuùng cuõng caàn ñöôïc löu vaøo haøng ñeå chôø ñeán löôït thöïc hieän. Phaàn töû ñaàu haøng seõ ñöôïc phuïc vuï tröôùc, thöôøng phaàn töû naøy ñöôïc goïi laø front, hay head cuûa haøng. Töông töï, phaàn töû cuoái haøng, cuõng laø phaàn töû vöøa ñöôïc theâm vaøo haøng, ñöôïc goïi laø rear hay tail cuûa haøng. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 37
- Chöông 3 – Haøng ñôïi Ñònh nghóa: Moät haøng caùc phaàn töû kieåu T laø moät chuoãi noái tieáp caùc phaàn töû cuûa T, keøm caùc taùc vuï sau: 1. Taïo môùi moät ñoái töôïng haøng roãng. 2. Theâm moät phaàn töû môùi vaøo haøng, giaû söû haøng chöa ñaày (phaàn töû döõ lieäu môùi luoân ñöôïc theâm vaøo cuoái haøng). 3. Loaïi moät phaàn töû ra khoûi haøng, giaû söû haøng chöa roãng (phaàn töû bò loaïi laø phaàn töû taïi ñaàu haøng, thöôøng laø phaàn töû vöøa ñöôïc xöû lyù xong). 4. Xem phaàn töû taïi ñaàu haøng (phaàn töû saép ñöôïc xöû lyù). 3.2. Ñaëc taû haøng Ñeå hoaøn taát ñònh nghóa cuûa caáu truùc döõ lieäu tröøu töôïng haøng, chuùng ta ñaëc taû moïi taùc vuï maø haøng thöïc hieän. Caùc ñaëc taû naøy cuõng töông töï nhö caùc ñaëc taû cho ngaên xeáp, chuùng ta ñöa ra teân, kieåu traû veà, danh saùch thoâng soá, precondition, postcondition vaø uses cho moãi phöông thöùc. Entry bieåu dieãn moät kieåu toång quaùt cho phaàn töû chöùa trong haøng. template Queue::Queue(); post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. template ErrorCode Queue::append(const Entry &item); post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. template ErrorCode Queue::serve(); post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. template ErrorCode Queue::retrieve(const Entry &item) const; post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc cheùp vaøo item, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow; caû hai tröôøng hôïp haøng ñeàu khoâng ñoåi. template bool Queue::empty() const; post: haøm traû veà true neáu haøng roãng; ngöôïc laïi, haøm traû veà false. Töø append (theâm vaøo haøng) vaø serve (ñaõ ñöôïc phuïc vuï) ñöôïc duøng cho caùc taùc vuï cô baûn treân haøng ñeå chæ ra moät caùch roõ raøng coâng vieäc thöïc hieän ñoái vôùi haøng, Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 38
- Chöông 3 – Haøng ñôïi vaø ñeå traùnh nhaàm laãn vôùi nhöõng töø maø chuùng ta seõ duøng vôùi caùc caáu truùc döõ lieäu khaùc. Chuùng ta coù lôùp Queue nhö sau: template class Queue { public: Queue(); bool empty() const; ErrorCode append(const Entry &item); ErrorCode serve(); ErrorCode retrieve(Entry &item) const; }; Ngoaøi caùc taùc vuï cô baûn nhö append, serve, retrieve, vaø empty ñoâi khi chuùng ta caàn theâm moät soá taùc vuï khaùc. Chaúng haïn nhö taùc vuï full ñeå kieåm tra xem haøng ñaõ ñaày hay chöa. Coù ba taùc vuï raát tieän lôïi ñoái vôùi haøng: clear ñeå doïn deïp caùc phaàn töû trong moät haøng coù saün vaø laøm cho haøng roãng, size cho bieát soá phaàn töû hieän coù trong haøng, cuoái cuøng laø serve_and_retrieve gom hai taùc vuï serve vaø retrieve laøm moät vì ngöôøi söû duïng thöôøng goïi hai taùc vuï naøy moät luùc. Chuùng ta coù theå boå sung caùc taùc vuï treân vaøo lôùp haøng ñaõ coù ôû treân. Tuy nhieân, chuùng ta coù theå taïo lôùp môùi coù theå söû duïng laïi caùc phöông thöùc vaø caùch hieän thöïc cuûa caùc lôùp ñaõ coù. Trong tröôøng hôïp naøy chuùng ta xaây döïng lôùp Extended_Queue ñeå boå sung caùc phöông thöùc theâm vaøo caùc phöông thöùc cô baûn cuûa lôùp Queue. Lôùp Extended_Queue ñöôïc goïi laø lôùp daãn xuaát töø lôùp Queue. Khaùi nieäm daãn xuaát cung caáp moät caùch ñònh nghóa caùc lôùp môùi ñôn giaûn baèng caùch boå sung theâm caùc phöông thöùc vaøo moät lôùp coù saün. Khaû naêng cuûa lôùp daãn xuaát söû duïng laïi caùc thaønh phaàn cuûa lôùp cô sôû ñöôïc goïi laø söï thöøa keá. Söï thöøa keá (inheritance) laø moät trong caùc ñaëc tính cô baûn cuûa laäp trình höôùng ñoái töôïng. Chuùng ta minh hoïa moái quan heä giöõa lôùp Queue vaø lôùp daãn xuaát Extended_Queue bôûi sô ñoà thöøa keá (hình 3.2a). Muõi teân chæ töø lôùp daãn xuaát ñeán lôùp cô sôû maø noù thöøa keá. Hình 3.2b minh hoïa söï thöøa keá caùc phöông thöùc vaø caùc phöông thöùc boå sung. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 39
- Chöông 3 – Haøng ñôïi Hình 3.2- Söï thöøa keá vaø lôùp daãn xuaát Chuùng ta coù lôùp Extended_Queue: template class Extended_Queue: public Queue { public: bool full() const; int size() const; void clear(); ErrorCode serve_and_retrieve(Entry &item); }; Töø khoùa public trong khai baùo thöøa keá coù nghóa laø khaû naêng ngöôøi söû duïng nhìn thaáy ñoái vôùi caùc thaønh phaàn maø lôùp daãn xuaát coù ñöôïc qua söï thöøa keá seõ gioáng heät nhö khaû naêng ngöôøi söû duïng nhìn thaáy chuùng ôû lôùp cô sôû. Ñaëc taû cuûa caùc phöông thöùc boå sung: template bool Extended_Queue::full() const; post: traû veà true neáu haøng ñaày, ngöôïc laïi, traû veà false. Haøng khoâng ñoåi. template void Extended_Queue::clear(); post: moïi phaàn töû trong haøng ñöôïc loaïi khoûi haøng, haøng trôû neân roãng. template int Extended_Queue::size() const; post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 40
- Chöông 3 – Haøng ñôïi template ErrorCode Extended_Queue::serve_and_retrieve(const Entry &item); post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc cheùp vaøo item ñoàng thôøi ñöôïc loaïi khoûi haøng, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. Moái quan heä giöõa lôùp Extended_Queue vaø lôùp Queue thöôøng ñöôïc goïi laø moái quan heä is-a vì moãi ñoái töôïng thuoäc lôùp Extended_Queue cuõng laø moät ñoái töôïng thuoäc lôùp Queue maø coù theâm moät soá ñaëc tính khaùc, ñoù laø caùc phöông thöùc serve_and_retrieve, full, size vaø clear. 3.3. Caùc phöông aùn hieän thöïc haøng 3.3.1. Caùc phöông aùn hieän thöïc haøng lieân tuïc 3.3.1.1. Moâ hình vaät lyù Töông töï nhö chuùng ta ñaõ laøm vôùi ngaên xeáp, chuùng ta coù theå taïo moät haøng trong boä nhôù maùy tính baèng moät daõy (kieåu döõ lieäu array) ñeå chöùa caùc phaàn töû cuûa haøng. Tuy nhieân, ôû ñaây chuùng ta caàn phaûi naém giöõ ñöôïc caû front vaø rear. Moät caùch ñôn giaûn laø chuùng ta giöõ front luoân laø vò trí ñaàu cuûa daõy. Luùc ñoù, ñeå theâm môùi moät phaàn töû vaøo haøng, chuùng ta taêng bieán ñeám bieåu dieãn rear y heät nhö chuùng ta theâm phaàn töû vaøo ngaên xeáp. Ñeå laáy moät phaàn töû ra khoûi haøng, chuùng ta phaûi traû moät giaù ñaét cho vieäc di chuyeån taát caû caùc phaàn töû hieän coù trong haøng tôùi moät böôùc ñeå laáp ñaày choã troáng taïi front. Maëc duø caùch hieän thöïc naøy raát gioáng vôùi hình aûnh haøng ngöôøi saép haøng ñôïi ñeå ñöôïc phuïc vuï, nhöng noù laø moät löïa choïn raát dôû trong maùy tính. 3.3.1.2. Hieän thöïc tuyeán tính Ñeå vieäc xöû lyù haøng coù hieäu quaû, chuùng ta duøng hai chæ soá ñeå naém giöõ front vaø rear maø khoâng di chuyeån caùc phaàn töû. Muoán theâm moät phaàn töû vaøo haøng, ñôn giaûn chuùng ta chæ caàn taêng rear leân moät vaø theâm phaàn töû vaøo vò trí naøy. Khi laáy moät phaàn töû ra khoûi haøng chuùng ta laáy phaàn töû taïi vò trí front vaø taêng front leân moät. Tuy nhieân phöông phaùp naøy coù moät nhöôïc ñieåm lôùn, ñoù laø front vaø rear luoân luoân taêng chöù khoâng giaûm. Ngay caû khi trong haøng khoâng bao giôø coù quaù hai phaàn töû, haøng vaãn ñoøi hoûi moät vuøng nhôù khoâng coù giôùi haïn neáu nhö caùc taùc vuï ñöôïc goïi lieân tuïc nhö sau: append, append, serve, append, serve, append, serve, append, serve, append, ... Vaán ñeà ôû ñaây laø khi caùc phaàn töû trong haøng dòch chuyeån tôùi trong daõy thì caùc vò trí ñaàu cuûa daõy seõ khoâng bao giôø ñöôïc söû duïng ñeán. Chuùng ta coù theå hình dung Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 41
- Chöông 3 – Haøng ñôïi haøng luùc ñoù troâng nhö moät con raén luoân tröôøn mình tôùi. Con raén coù luùc daøi ra, coù luùc ngaén laïi, nhöng neáu cöù tröôøn tôùi maõi theo moät höôùng thì cuõng phaûi ñeán luùc noù gaëp ñieåm döøng cuûa boä nhôù. Tuy nhieân, cuõng caàn chuù yù raèng trong caùc öùng duïng maø coù luùc haøng trôû neân roãng (khi moät loaït caùc yeâu caàu ñang ñôïi ñaõ ñöôïc giaûi quyeát heát taïi moät thôøi ñieåm naøo ñoù), thì taïi thôøi ñieåm naøy haøng coù theå ñöôïc saép xeáp laïi, front vaø rear ñöôïc gaùn trôû laïi veà ñaàu daõy. Tröôøng hôïp naøy cho thaáy vieäc söû duïng moät sô ñoà ñôn giaûn goàm hai chæ soá vaø moät boä nhôù tuyeán tính nhö vöøa neâu laø moät caùch hieän thöïc coù hieäu quaû cao. 3.3.1.3. Daõy voøng Veà yù nieäm, chuùng ta coù theå khaéc phuïc tính thieáu hieäu quaû trong vieäc söû duïng boä nhôù baèng caùch hình dung daõy coù daïng voøng thay vì tuyeán tính. Khi phaàn töû ñöôïc theâm vaøo hay laáy ra khoûi haøng, ñieåm ñaàu cuûa haøng seõ ñuoåi theo ñieåm cuoái cuûa haøng voøng theo daõy, vaø nhö vaäy con raén vaãn coù theå tröôøn tôùi voâ haïn nhöng vaãn bò nhoát trong moät voøng coù giôùi haïn. Taïi caùc thôøi ñieåm khaùc nhau, haøng seõ chieám nhöõng phaàn khaùc nhau trong daõy voøng, nhöng chuùng ta seõ khoâng bao giôø phaûi lo veà söï vöôït giôùi haïn boä nhôù tröø khi daõy thaät söï khoâng coøn phaàn töû troáng, tröôøng hôïp naøy ñöôïc xem nhö haøng ñaày, ErrorCode seõ nhaän trò overflow. Hieän thöïc cuûa daõy voøng Vaán ñeà tieáp theo cuûa chuùng ta laø duøng moät daõy tuyeán tính ñeå moâ phoûng moät daõy voøng. Caùc vò trí trong voøng troøn ñöôïc ñaùnh soá töø 0 ñeán max-1, trong ñoù max laø toång soá phaàn töû trong daõy voøng. Ñeå hieän thöïc daõy voøng, chuùng ta cuõng söû duïng caùc phaàn töû ñöôïc ñaùnh soá töông töï daõy tuyeán tính. Söï thay ñoåi caùc chæ soá chæ ñôn giaûn laø pheùp laáy phaàn dö trong soá hoïc: khi moät chæ soá taêng vöôït qua giôùi haïn max- 1, noù ñöôïc baét ñaàu trôû laïi vôùi trò 0. Ñieàu naøy töông töï vieäc coäng theâm giôø trong ñoàng hoà maët troøn, caùc giôø ñöôïc ñaùnh soá töø 1 ñeán 12, neáu chuùng ta coäng theâm 4 giôø vaøo 10 giôø chuùng ta seõ coù 2 giôø. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 42
- Chöông 3 – Haøng ñôïi Hình 3.3- Haøng trong daõy voøng Daõy voøng trong C++ Trong C++, chuùng ta coù theå taêng chæ soá i trong moät daõy voøng nhö sau: i = ((i+1) == max) ? 0: (i+1); hoaëc if ((i+1) == max) i = 0; else i = i+1; hoaëc i = (i+1) % max; Caùc ñieàu kieän bieân Tröôùc khi vieát nhöõng giaûi thuaät theâm hoaëc loaïi phaàn töû ra khoûi haøng, chuùng ta haõy xem xeùt ñeán caùc ñieàu kieän bieân (boundary conditions), ñoù laø caùc daáu hieäu cho bieát haøng coøn roãng hay ñaõ ñaày. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 43
- Chöông 3 – Haøng ñôïi Neáu trong haøng chæ coù moät phaàn töû thì caû front vaø rear ñeàu chæ ñeán phaàn töû naøy (hình 3.4 a). Khi phaàn töû naøy ñöôïc loaïi khoûi haøng, front seõ taêng leân 1. Do ñoù haøng laø roãng khi rear chæ vò trí ngay tröôùc front (hình 3.4 b). Do rear di chuyeån veà phía tröôùc moãi khi theâm phaàn töû môùi, neân khi haøng saép ñaày vaø baèng caùch di chuyeån voøng thì rear cuõng seõ gaàn gaëp front trôû laïi (hình 3.3 c). Luùc naøy khi phaàn töû cuoái cuøng ñöôïc theâm vaøo laøm cho haøng ñaày thì rear cuõng chæ vò trí ngay tröôùc front (hình 3.4 d). Chuùng ta gaëp moät khoù khaên môùi: vò trí töông ñoái cuûa front vaø rear gioáng heät nhau trong caû hai tröôøng hôïp haøng ñaày vaø haøng roãng. (a) (b) (c) (d) Hình 3.4- Hình aûnh minh hoïa haøng roãng vaø haøng ñaày Caùc caùch giaûi quyeát coù theå Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 44
- Chöông 3 – Haøng ñôïi Coù ít nhaát 3 caùch giaûi quyeát cho vaán ñeà neâu treân. Caùch thöù nhaát laø daønh laïi moät vò trí troáng khi haøng ñaày, rear seõ caùch front moät vò trí giöõa. Caùch thöù hai laø söû duïng theâm moät bieán, chaúng haïn moät bieán côø kieåu bool seõ coù trò true khi rear nhích ñeán saùt front trong tröôøng hôïp haøng ñaày (chuùng ta coù theå tuøy yù choïn tröôøng hôïp haøng ñaày hay roãng), hay moät bieán ñeám ñeå ñeám soá phaàn töû hieän coù trong haøng. Caùch thöù ba laø cho moät hoaëc caû hai chæ soá front vaø rear mang moät trò ñaëc bieät naøo ñoù ñeå chæ ra haøng roãng, ví duï nhö rear seõ laø -1 khi haøng roãng. 3.3.1.4. Toång keát caùc caùch hieän thöïc cho haøng lieân tuïc Ñeå toång keát nhöõng ñieàu ñaõ baøn veà haøng, chuùng ta lieät keâ döôùi ñaây taát caû caùc phöông phaùp maø chuùng ta ñaõ thaûo luaän veà caùc caùch hieän thöïc haøng. • Moâ hình vaät lyù: moät daõy tuyeán tính coù front luoân chæ vò trí ñaàu tieân trong haøng vaø moïi phaàn töû cuûa haøng phaûi di chuyeån tôùi moät böôùc khi phaàn töû taïi front ñöôïc laáy ñi. Ñaây laø phöông phaùp raát dôû trong maùy tính noùi chung. Moät daõy tuyeán tính coù hai chæ soá front vaø rear luoân luoân taêng. Ñaây laø • phöông phaùp toát neáu nhö haøng coù theå ñöôïc laøm roãng. Moät daõy voøng coù hai chæ soá front,rear vaø moät vò trí ñeå troáng. • Moät daõy voøng coù hai chæ soá front,rear vaø moät côø cho bieát haøng ñaày (hoaëc • roãng). Moät daõy voøng coù hai chæ soá front,rear vaø moät bieán ñeám soá phaàn töû hieän coù • trong haøng. Moät daõy voøng coù hai chæ soá front,rear maø hai chæ soá naøy seõ mang trò ñaëc • bieät trong tröôøng hôïp haøng roãng. 3.3.2. Phöông aùn hieän thöïc haøng lieân keát Baèng caùch söû duïng boä nhôù lieân tuïc, vieäc hieäc thöïc haøng khoù hôn vieäc hieän thöïc ngaên xeáp raát nhieàu do chuùng ta duøng vuøng nhôù tuyeán tính ñeå giaû laëp toå chöùc voøng vaø gaëp khoù khaên trong vieäc phaân bieät moät haøng ñaày vôùi moät haøng roãng. Tuy nhieân, hieän thöïc haøng lieân keát laïi thöïc söï deã daøng nhö hieän thöïc ngaên xeáp lieân keát. Chuùng ta chæ caàn naém giöõ hai con troû, front vaø rear ñeå tham chieáu ñeán phaàn töû ñaàu vaø phaàn töû cuoái cuûa haøng. Caùc taùc vuï theâm hay loaïi phaàn töû treân haøng ñöôïc minh hoïa trong hình 3.5. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 45
- Chöông 3 – Haøng ñôïi Hình 3.5 Caùc taùc vuï theâm vaø loaïi phaàn töû treân haøng lieân keát 3.4. Hieän thöïc haøng 3.4.1. Hieän thöïc haøng lieân tuïc Hieän thöïc voøng cho haøng lieân tuïc trong C++ Phaàn naøy trình baøy caùc phöông thöùc cuûa caùch hieän thöïc haøng baèng daõy voøng coù bieán ñeám caùc phaàn töû. Chuùng ta coù ñònh nghóa lôùp Queue nhö sau: Giaù trò nhoû chæ ñeå kieåm tra CTDL Queue. const int maxQueue = 10; // template class Queue { public: Queue(); bool empty() const; ErrorCode serve(); ErrorCode append(const Entry &item); ErrorCode retrieve(Entry &item) const; protected: int count; int front, rear; Entry entry[maxQueue]; }; Caùc döõ lieäu thaønh phaàn trong lôùp Queue ñöôïc khai baùo protected. Ñoái vôùi ngöôøi söû duïng seõ khoâng coù gì thay ñoåi, nghóa laø chuùng vaãn khoâng ñöôïc ngöôøi söû duïng nhìn thaáy vaø vaãn ñaûm baûo söï che daáu thoâng tin. Muïc ñích ôû ñaây laø khi chuùng ta xaây döïng lôùp Extended_Queue daãn xuaát töø lôùp Queue thì lôùp daãn xuaát seõ söû duïng ñöôïc caùc döõ lieäu thaønh phaàn naøy. Khi caùc döõ lieäu thaønh phaàn cuûa lôùp cô sôû ñöôïc khai baùo laø private thì lôùp daãn xuaát cuõng seõ khoâng nhìn thaáy chuùng. template Queue::Queue() /* post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. */ Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 46
- Chöông 3 – Haøng ñôïi { count = 0; rear = maxQueue - 1; front = 0; } template bool Queue::empty() const /* post: haøm traû veà true neáu haøng roãng; ngöôïc laïi, haøm traû veà false. */ { return count == 0; } template ErrorCode Queue::append(const Entry &item) /* post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. */ { if (count >= maxQueue) return overflow; count++; rear = ((rear + 1) == maxQueue) ? 0 : (rear + 1); entry[rear] = item; return success; } template ErrorCode Queue::serve() /* post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. */ { if (count
- Chöông 3 – Haøng ñôïi Queue, neáu nhö count ñöôïc khai baùo laø private thì phöông thöùc size cuûa lôùp Extended_Queue phaûi söû duïng haøng loaït caâu leänh goïi caùc phöông thöùc public cuûa Queue nhö serve, retrieve, append môùi thöïc hieän ñöôïc. Caùc phöông thöùc coøn laïi cuûa Extended_Queue cuõng töông töï, vaø chuùng ta daønh laïi phaàn baøi taäp. template int Extended_Queue::size() const /* post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. */ { return count; } 3.4.2. Hieän thöïc haøng lieân keát 3.4.2.1. Caùc khai baùo cô baûn Vôùi moïi haøng, chuùng ta duøng kieåu Entry cho kieåu cuûa döõ lieäu löu trong haøng. Ñoái vôùi hieän thöïc lieân keát, chuùng ta khai baùo caùc node töông töï nhö ñaõ laøm cho ngaên xeáp lieân keát trong chöông 2. Chuùng ta coù ñaëc taû döôùi ñaây: template class Queue { public: // Caùc phöông thöùc chuaån cuûa haøng Queue(); bool empty() const; ErrorCode append(const Entry &item); ErrorCode serve(); ErrorCode retrieve(Entry &item) const; // Caùc phöông thöùc baûo ñaûm tính an toaøn cho haøng lieân keát ~Queue(); Queue(const Queue &original); void operator =(const Queue &original); protected: Node *front, *rear; }; Constructor thöù nhaát khôûi taïo moät haøng roãng: template Queue::Queue() /* post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. */ { front = rear = NULL; } Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 48
- Chöông 3 – Haøng ñôïi Phöông thöùc append theâm moät phaàn töû vaøo ñaàu rear cuûa haøng: template ErrorCode Queue::append(const Entry &item) /* post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. */ { Node *new_rear = new Node (item); if (new_rear == NULL) return overflow; if (rear == NULL) front = rear = new_rear; // tröôøng hôïp ñaëc bieät: theâm vaøo haøng ñang roãng. else { rear->next = new_rear; rear = new_rear; } return success; } Tröôøng hôïp haøng roãng caàn phaân bieät vôùi caùc tröôøng hôïp bình thöôøng khaùc, do khi theâm moät node vaøo moät haøng roãng caàn phaûi gaùn caû front vaø rear tham chieáu ñeán node naøy, trong khi vieäc theâm moät node vaøo moät haøng khoâng roãng chæ coù rear laø caàn ñöôïc gaùn laïi. Phöông thöùc loaïi moät phaàn töû ra khoûi haøng ñöôïc vieát nhö sau: template ErrorCode Queue::serve() /* post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. */ { if (front == NULL) return underflow; Node *old_front = front; front = old_front->next; if (front == NULL) rear= NULL;// tröôøng hôïp ñaëc bieät: loaïi phaàn töû cuoái cuøng cuûa haøng delete old_front; return success; } Moät laàn nöõa tröôøng hôïp haøng roãng caàn ñöôïc xem xeùt rieâng. Khi phaàn töû ñöôïc loaïi khoûi haøng khoâng phaûi laø phaàn töû cuoái trong haøng, chæ coù front caàn ñöôïc gaùn laïi, ngöôïc laïi caû front vaø rear caàn phaûi gaùn veà NULL. Caùc phöông thöùc khaùc cuûa haøng lieân keát ñöôïc daønh laïi cho phaàn baøi taäp. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 49
- Chöông 3 – Haøng ñôïi Neáu so saùnh vôùi haøng lieân tuïc, chuùng ta seõ thaáy raèng haøng lieân keát deã hieåu hôn caû veà maët khaùi nieäm caû veà caùch hieän thöïc chöông trình. 3.4.3. Haøng lieân keát môû roäng Hieän thöïc lieân keát cuûa lôùp Queue cung caáp moät lôùp cô sôû cho caùc lôùp khaùc. Ñònh nghóa döôùi ñaây daønh cho lôùp daãn xuaát Extended_Queue hoaøn toaøn töông töï nhö haøng lieân tuïc. template class Extended_queue: public Queue { public: bool full() const; int size() const; void clear(); ErrorCode serve_and_retrieve(Entry &item); }; Maëc duø lôùp Extended_Queue naøy coù hieän thöïc lieân keát, nhöng noù khoâng caàn caùc phöông thöùc nhö copy contructor, overloaded assignment, hoaëc destructor. Ñoái vôùi moät trong caùc phöông thöùc naøy, trình bieân dòch seõ goïi caùc phöông thöùc maëc ñònh cuûa lôùp Extended_Queue. Phöông thöùc maëc ñònh cuûa moät lôùp daãn xuaát seõ goïi phöông thöùc töông öùng cuûa lôùp cô sôû. Chaúng haïn, khi moät ñoái töôïng cuûa lôùp Extended_Queue chuaån bò ra khoûi taàm vöïc, destructor maëc ñònh cuûa lôùp Extended_Queue seõ goïi destructor cuûa lôùp Queue: moïi node caáp phaùt ñoäng cuûa Extended_Queue ñeàu ñöôïc giaûi phoùng. Do lôùp Extended_Queue cuûa chuùng ta khoâng chöùa theâm thuoäc tính con troû naøo ngoaøi caùc thuoäc tính con troû thöøa keá töø lôùp Queue, destructor maø trình bieân dòch goïi ñaõ laøm ñöôïc taát caû nhöõng ñieàu maø chuùng ta mong muoán. Caùc phöông thöùc ñöôïc khai baùo cho lôùp Extended_Queue caàn ñöôïc vieát laïi cho phuø hôïp vôùi caáu truùc lieân keát cuûa haøng. Chaúng haïn, phöông thöùc size caàn söû duïng moät con troû taïm window ñeå duyeät haøng (noùi caùch khaùc, con troû window seõ di chuyeån doïc theo haøng vaø laàn löôït chæ ñeán töøng node trong haøng). template int Extended_queue::size() const /* post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. */ { Node *window = front; int count = 0; while (window != NULL) { window = window->next; count++; } return count; } Caùc phöông thöùc khaùc cuûa Extended_Queue lieân keát xem nhö baøi taäp. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 50
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hệ quản trị cơ sở dữ liệu - chương 3 - Lưu trữ và cấu trúc tập tin
39 p | 548 | 344
-
Quản lý cơ sở dữ liệu với Microsoft SQL Server 2005 part 3
27 p | 162 | 96
-
Bài giảng Quản trị cơ sở dữ liệu Oracle: Chương 3 - GV. Cao Thị Nhâm (HV Ngân hàng)
14 p | 91 | 45
-
Bài giảng Hệ quản trị cơ sở dữ liệu Access: Chương 3,4: Một số thao tác trên CSDL/ Query
94 p | 84 | 35
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Lương Thị Ngọc Khánh
52 p | 41 | 7
-
Bài giảng Hệ quản trị CSDL FoxPro: Chương 3 - CĐSP Quảng Trị
8 p | 31 | 5
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - ThS. Nguyễn Thị Khiêm Hòa (ĐH Ngân hàng TP.HCM)
32 p | 36 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 3 - Nguyễn Xuân Vinh
17 p | 40 | 4
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 p | 30 | 4
-
Bài giảng SQL server 2005: Chương 5 - Phạm Mạnh Cương
15 p | 3 | 3
-
Bài giảng Quản trị cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hải
89 p | 36 | 2
-
Bài giảng Chương 3: Mô hình hóa dữ liệu mức quan niệm
89 p | 16 | 2
-
Bài giảng SQL server 2005: Chương 1 - Phạm Mạnh Cương
6 p | 2 | 2
-
Bài giảng SQL server 2005: Chương 2 - Phạm Mạnh Cương
15 p | 4 | 2
-
Bài giảng SQL server 2005: Chương 3 - Phạm Mạnh Cương
43 p | 6 | 2
-
Bài giảng SQL server 2005: Chương 4 - Phạm Mạnh Cương
51 p | 6 | 2
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3: Danh sách liên kết
19 p | 11 | 1

markdown:
# CTDL 2005 chuong 3
Chia sẻ: Hoang Nguyen | Ngày: | Loại File: PDF | Số trang:14
lượt xem 19
download
![](http://image.tlvnimg.com/document/thumbnail/2009/20091103/hoang3/80x100/ctdl_2005_chuong_3_6179.jpg)
##
CTDL 2005 chuong 3
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static.tlvnimg.com/b2013az/templates/version1/default/images/down16x21.png)
Hàng đợi
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: CTDL 2005 chuong 3
- Chöông 3 – Haøng ñôïi Chöông 3 – HAØNG ÑÔÏI 3.1. Ñònh nghóa haøng Trong caùc öùng duïng maùy tính, chuùng ta ñònh nghóa CTDL haøng laø moät danh saùch trong ñoù vieäc theâm moät phaàn töû vaøo ñöôïc thöïc hieän ôû moät ñaàu cuûa danh saùch (cuoái haøng), vaø vieäc laáy döõ lieäu khoûi danh saùch thöïc hieän ôû ñaàu coøn laïi (ñaàu haøng). Chuùng ta coù theå hình dung CTDL haøng cuõng gioáng nhö moät haøng ngöôøi laàn löôït chôø mua veù, ai ñeán tröôùc ñöôïc phuïc vuï tröôùc. Haøng coøn ñöôïc goïi laø danh saùch FIFO (First In First Out) Hình 3.1- Haøng ñôïi Caùc öùng duïng coù söû duïng haøng coøn phoå bieán hôn caùc öùng duïng coù söû duïng ngaên xeáp, vì khi maùy tính thöïc hieän caùc nhieäm vuï, cuõng gioáng nhö caùc coâng vieäc trong cuoäc soáng, moãi coâng vieäc ñeàu caàn phaûi ñôïi ñeán löôït cuûa mình. Trong moät heä thoáng maùy tính coù theå coù nhieàu haøng ñôïi caùc coâng vieäc ñang chôø ñeán löôït ñöôïc in, ñöôïc truy xuaát ñóa hoaëc ñöôïc söû duïng CPU. Trong moät chöông trình ñôn giaûn coù theå coù nhieàu coâng vieäc ñöôïc löu vaøo haøng ñôïi, hoaëc moät coâng vieäâc coù theå khôûi taïo moät soá coâng vieäc khaùc maø chuùng cuõng caàn ñöôïc löu vaøo haøng ñeå chôø ñeán löôït thöïc hieän. Phaàn töû ñaàu haøng seõ ñöôïc phuïc vuï tröôùc, thöôøng phaàn töû naøy ñöôïc goïi laø front, hay head cuûa haøng. Töông töï, phaàn töû cuoái haøng, cuõng laø phaàn töû vöøa ñöôïc theâm vaøo haøng, ñöôïc goïi laø rear hay tail cuûa haøng. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 37
- Chöông 3 – Haøng ñôïi Ñònh nghóa: Moät haøng caùc phaàn töû kieåu T laø moät chuoãi noái tieáp caùc phaàn töû cuûa T, keøm caùc taùc vuï sau: 1. Taïo môùi moät ñoái töôïng haøng roãng. 2. Theâm moät phaàn töû môùi vaøo haøng, giaû söû haøng chöa ñaày (phaàn töû döõ lieäu môùi luoân ñöôïc theâm vaøo cuoái haøng). 3. Loaïi moät phaàn töû ra khoûi haøng, giaû söû haøng chöa roãng (phaàn töû bò loaïi laø phaàn töû taïi ñaàu haøng, thöôøng laø phaàn töû vöøa ñöôïc xöû lyù xong). 4. Xem phaàn töû taïi ñaàu haøng (phaàn töû saép ñöôïc xöû lyù). 3.2. Ñaëc taû haøng Ñeå hoaøn taát ñònh nghóa cuûa caáu truùc döõ lieäu tröøu töôïng haøng, chuùng ta ñaëc taû moïi taùc vuï maø haøng thöïc hieän. Caùc ñaëc taû naøy cuõng töông töï nhö caùc ñaëc taû cho ngaên xeáp, chuùng ta ñöa ra teân, kieåu traû veà, danh saùch thoâng soá, precondition, postcondition vaø uses cho moãi phöông thöùc. Entry bieåu dieãn moät kieåu toång quaùt cho phaàn töû chöùa trong haøng. template Queue::Queue(); post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. template ErrorCode Queue::append(const Entry &item); post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. template ErrorCode Queue::serve(); post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. template ErrorCode Queue::retrieve(const Entry &item) const; post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc cheùp vaøo item, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow; caû hai tröôøng hôïp haøng ñeàu khoâng ñoåi. template bool Queue::empty() const; post: haøm traû veà true neáu haøng roãng; ngöôïc laïi, haøm traû veà false. Töø append (theâm vaøo haøng) vaø serve (ñaõ ñöôïc phuïc vuï) ñöôïc duøng cho caùc taùc vuï cô baûn treân haøng ñeå chæ ra moät caùch roõ raøng coâng vieäc thöïc hieän ñoái vôùi haøng, Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 38
- Chöông 3 – Haøng ñôïi vaø ñeå traùnh nhaàm laãn vôùi nhöõng töø maø chuùng ta seõ duøng vôùi caùc caáu truùc döõ lieäu khaùc. Chuùng ta coù lôùp Queue nhö sau: template class Queue { public: Queue(); bool empty() const; ErrorCode append(const Entry &item); ErrorCode serve(); ErrorCode retrieve(Entry &item) const; }; Ngoaøi caùc taùc vuï cô baûn nhö append, serve, retrieve, vaø empty ñoâi khi chuùng ta caàn theâm moät soá taùc vuï khaùc. Chaúng haïn nhö taùc vuï full ñeå kieåm tra xem haøng ñaõ ñaày hay chöa. Coù ba taùc vuï raát tieän lôïi ñoái vôùi haøng: clear ñeå doïn deïp caùc phaàn töû trong moät haøng coù saün vaø laøm cho haøng roãng, size cho bieát soá phaàn töû hieän coù trong haøng, cuoái cuøng laø serve_and_retrieve gom hai taùc vuï serve vaø retrieve laøm moät vì ngöôøi söû duïng thöôøng goïi hai taùc vuï naøy moät luùc. Chuùng ta coù theå boå sung caùc taùc vuï treân vaøo lôùp haøng ñaõ coù ôû treân. Tuy nhieân, chuùng ta coù theå taïo lôùp môùi coù theå söû duïng laïi caùc phöông thöùc vaø caùch hieän thöïc cuûa caùc lôùp ñaõ coù. Trong tröôøng hôïp naøy chuùng ta xaây döïng lôùp Extended_Queue ñeå boå sung caùc phöông thöùc theâm vaøo caùc phöông thöùc cô baûn cuûa lôùp Queue. Lôùp Extended_Queue ñöôïc goïi laø lôùp daãn xuaát töø lôùp Queue. Khaùi nieäm daãn xuaát cung caáp moät caùch ñònh nghóa caùc lôùp môùi ñôn giaûn baèng caùch boå sung theâm caùc phöông thöùc vaøo moät lôùp coù saün. Khaû naêng cuûa lôùp daãn xuaát söû duïng laïi caùc thaønh phaàn cuûa lôùp cô sôû ñöôïc goïi laø söï thöøa keá. Söï thöøa keá (inheritance) laø moät trong caùc ñaëc tính cô baûn cuûa laäp trình höôùng ñoái töôïng. Chuùng ta minh hoïa moái quan heä giöõa lôùp Queue vaø lôùp daãn xuaát Extended_Queue bôûi sô ñoà thöøa keá (hình 3.2a). Muõi teân chæ töø lôùp daãn xuaát ñeán lôùp cô sôû maø noù thöøa keá. Hình 3.2b minh hoïa söï thöøa keá caùc phöông thöùc vaø caùc phöông thöùc boå sung. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 39
- Chöông 3 – Haøng ñôïi Hình 3.2- Söï thöøa keá vaø lôùp daãn xuaát Chuùng ta coù lôùp Extended_Queue: template class Extended_Queue: public Queue { public: bool full() const; int size() const; void clear(); ErrorCode serve_and_retrieve(Entry &item); }; Töø khoùa public trong khai baùo thöøa keá coù nghóa laø khaû naêng ngöôøi söû duïng nhìn thaáy ñoái vôùi caùc thaønh phaàn maø lôùp daãn xuaát coù ñöôïc qua söï thöøa keá seõ gioáng heät nhö khaû naêng ngöôøi söû duïng nhìn thaáy chuùng ôû lôùp cô sôû. Ñaëc taû cuûa caùc phöông thöùc boå sung: template bool Extended_Queue::full() const; post: traû veà true neáu haøng ñaày, ngöôïc laïi, traû veà false. Haøng khoâng ñoåi. template void Extended_Queue::clear(); post: moïi phaàn töû trong haøng ñöôïc loaïi khoûi haøng, haøng trôû neân roãng. template int Extended_Queue::size() const; post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 40
- Chöông 3 – Haøng ñôïi template ErrorCode Extended_Queue::serve_and_retrieve(const Entry &item); post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc cheùp vaøo item ñoàng thôøi ñöôïc loaïi khoûi haøng, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. Moái quan heä giöõa lôùp Extended_Queue vaø lôùp Queue thöôøng ñöôïc goïi laø moái quan heä is-a vì moãi ñoái töôïng thuoäc lôùp Extended_Queue cuõng laø moät ñoái töôïng thuoäc lôùp Queue maø coù theâm moät soá ñaëc tính khaùc, ñoù laø caùc phöông thöùc serve_and_retrieve, full, size vaø clear. 3.3. Caùc phöông aùn hieän thöïc haøng 3.3.1. Caùc phöông aùn hieän thöïc haøng lieân tuïc 3.3.1.1. Moâ hình vaät lyù Töông töï nhö chuùng ta ñaõ laøm vôùi ngaên xeáp, chuùng ta coù theå taïo moät haøng trong boä nhôù maùy tính baèng moät daõy (kieåu döõ lieäu array) ñeå chöùa caùc phaàn töû cuûa haøng. Tuy nhieân, ôû ñaây chuùng ta caàn phaûi naém giöõ ñöôïc caû front vaø rear. Moät caùch ñôn giaûn laø chuùng ta giöõ front luoân laø vò trí ñaàu cuûa daõy. Luùc ñoù, ñeå theâm môùi moät phaàn töû vaøo haøng, chuùng ta taêng bieán ñeám bieåu dieãn rear y heät nhö chuùng ta theâm phaàn töû vaøo ngaên xeáp. Ñeå laáy moät phaàn töû ra khoûi haøng, chuùng ta phaûi traû moät giaù ñaét cho vieäc di chuyeån taát caû caùc phaàn töû hieän coù trong haøng tôùi moät böôùc ñeå laáp ñaày choã troáng taïi front. Maëc duø caùch hieän thöïc naøy raát gioáng vôùi hình aûnh haøng ngöôøi saép haøng ñôïi ñeå ñöôïc phuïc vuï, nhöng noù laø moät löïa choïn raát dôû trong maùy tính. 3.3.1.2. Hieän thöïc tuyeán tính Ñeå vieäc xöû lyù haøng coù hieäu quaû, chuùng ta duøng hai chæ soá ñeå naém giöõ front vaø rear maø khoâng di chuyeån caùc phaàn töû. Muoán theâm moät phaàn töû vaøo haøng, ñôn giaûn chuùng ta chæ caàn taêng rear leân moät vaø theâm phaàn töû vaøo vò trí naøy. Khi laáy moät phaàn töû ra khoûi haøng chuùng ta laáy phaàn töû taïi vò trí front vaø taêng front leân moät. Tuy nhieân phöông phaùp naøy coù moät nhöôïc ñieåm lôùn, ñoù laø front vaø rear luoân luoân taêng chöù khoâng giaûm. Ngay caû khi trong haøng khoâng bao giôø coù quaù hai phaàn töû, haøng vaãn ñoøi hoûi moät vuøng nhôù khoâng coù giôùi haïn neáu nhö caùc taùc vuï ñöôïc goïi lieân tuïc nhö sau: append, append, serve, append, serve, append, serve, append, serve, append, ... Vaán ñeà ôû ñaây laø khi caùc phaàn töû trong haøng dòch chuyeån tôùi trong daõy thì caùc vò trí ñaàu cuûa daõy seõ khoâng bao giôø ñöôïc söû duïng ñeán. Chuùng ta coù theå hình dung Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 41
- Chöông 3 – Haøng ñôïi haøng luùc ñoù troâng nhö moät con raén luoân tröôøn mình tôùi. Con raén coù luùc daøi ra, coù luùc ngaén laïi, nhöng neáu cöù tröôøn tôùi maõi theo moät höôùng thì cuõng phaûi ñeán luùc noù gaëp ñieåm döøng cuûa boä nhôù. Tuy nhieân, cuõng caàn chuù yù raèng trong caùc öùng duïng maø coù luùc haøng trôû neân roãng (khi moät loaït caùc yeâu caàu ñang ñôïi ñaõ ñöôïc giaûi quyeát heát taïi moät thôøi ñieåm naøo ñoù), thì taïi thôøi ñieåm naøy haøng coù theå ñöôïc saép xeáp laïi, front vaø rear ñöôïc gaùn trôû laïi veà ñaàu daõy. Tröôøng hôïp naøy cho thaáy vieäc söû duïng moät sô ñoà ñôn giaûn goàm hai chæ soá vaø moät boä nhôù tuyeán tính nhö vöøa neâu laø moät caùch hieän thöïc coù hieäu quaû cao. 3.3.1.3. Daõy voøng Veà yù nieäm, chuùng ta coù theå khaéc phuïc tính thieáu hieäu quaû trong vieäc söû duïng boä nhôù baèng caùch hình dung daõy coù daïng voøng thay vì tuyeán tính. Khi phaàn töû ñöôïc theâm vaøo hay laáy ra khoûi haøng, ñieåm ñaàu cuûa haøng seõ ñuoåi theo ñieåm cuoái cuûa haøng voøng theo daõy, vaø nhö vaäy con raén vaãn coù theå tröôøn tôùi voâ haïn nhöng vaãn bò nhoát trong moät voøng coù giôùi haïn. Taïi caùc thôøi ñieåm khaùc nhau, haøng seõ chieám nhöõng phaàn khaùc nhau trong daõy voøng, nhöng chuùng ta seõ khoâng bao giôø phaûi lo veà söï vöôït giôùi haïn boä nhôù tröø khi daõy thaät söï khoâng coøn phaàn töû troáng, tröôøng hôïp naøy ñöôïc xem nhö haøng ñaày, ErrorCode seõ nhaän trò overflow. Hieän thöïc cuûa daõy voøng Vaán ñeà tieáp theo cuûa chuùng ta laø duøng moät daõy tuyeán tính ñeå moâ phoûng moät daõy voøng. Caùc vò trí trong voøng troøn ñöôïc ñaùnh soá töø 0 ñeán max-1, trong ñoù max laø toång soá phaàn töû trong daõy voøng. Ñeå hieän thöïc daõy voøng, chuùng ta cuõng söû duïng caùc phaàn töû ñöôïc ñaùnh soá töông töï daõy tuyeán tính. Söï thay ñoåi caùc chæ soá chæ ñôn giaûn laø pheùp laáy phaàn dö trong soá hoïc: khi moät chæ soá taêng vöôït qua giôùi haïn max- 1, noù ñöôïc baét ñaàu trôû laïi vôùi trò 0. Ñieàu naøy töông töï vieäc coäng theâm giôø trong ñoàng hoà maët troøn, caùc giôø ñöôïc ñaùnh soá töø 1 ñeán 12, neáu chuùng ta coäng theâm 4 giôø vaøo 10 giôø chuùng ta seõ coù 2 giôø. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 42
- Chöông 3 – Haøng ñôïi Hình 3.3- Haøng trong daõy voøng Daõy voøng trong C++ Trong C++, chuùng ta coù theå taêng chæ soá i trong moät daõy voøng nhö sau: i = ((i+1) == max) ? 0: (i+1); hoaëc if ((i+1) == max) i = 0; else i = i+1; hoaëc i = (i+1) % max; Caùc ñieàu kieän bieân Tröôùc khi vieát nhöõng giaûi thuaät theâm hoaëc loaïi phaàn töû ra khoûi haøng, chuùng ta haõy xem xeùt ñeán caùc ñieàu kieän bieân (boundary conditions), ñoù laø caùc daáu hieäu cho bieát haøng coøn roãng hay ñaõ ñaày. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 43
- Chöông 3 – Haøng ñôïi Neáu trong haøng chæ coù moät phaàn töû thì caû front vaø rear ñeàu chæ ñeán phaàn töû naøy (hình 3.4 a). Khi phaàn töû naøy ñöôïc loaïi khoûi haøng, front seõ taêng leân 1. Do ñoù haøng laø roãng khi rear chæ vò trí ngay tröôùc front (hình 3.4 b). Do rear di chuyeån veà phía tröôùc moãi khi theâm phaàn töû môùi, neân khi haøng saép ñaày vaø baèng caùch di chuyeån voøng thì rear cuõng seõ gaàn gaëp front trôû laïi (hình 3.3 c). Luùc naøy khi phaàn töû cuoái cuøng ñöôïc theâm vaøo laøm cho haøng ñaày thì rear cuõng chæ vò trí ngay tröôùc front (hình 3.4 d). Chuùng ta gaëp moät khoù khaên môùi: vò trí töông ñoái cuûa front vaø rear gioáng heät nhau trong caû hai tröôøng hôïp haøng ñaày vaø haøng roãng. (a) (b) (c) (d) Hình 3.4- Hình aûnh minh hoïa haøng roãng vaø haøng ñaày Caùc caùch giaûi quyeát coù theå Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 44
- Chöông 3 – Haøng ñôïi Coù ít nhaát 3 caùch giaûi quyeát cho vaán ñeà neâu treân. Caùch thöù nhaát laø daønh laïi moät vò trí troáng khi haøng ñaày, rear seõ caùch front moät vò trí giöõa. Caùch thöù hai laø söû duïng theâm moät bieán, chaúng haïn moät bieán côø kieåu bool seõ coù trò true khi rear nhích ñeán saùt front trong tröôøng hôïp haøng ñaày (chuùng ta coù theå tuøy yù choïn tröôøng hôïp haøng ñaày hay roãng), hay moät bieán ñeám ñeå ñeám soá phaàn töû hieän coù trong haøng. Caùch thöù ba laø cho moät hoaëc caû hai chæ soá front vaø rear mang moät trò ñaëc bieät naøo ñoù ñeå chæ ra haøng roãng, ví duï nhö rear seõ laø -1 khi haøng roãng. 3.3.1.4. Toång keát caùc caùch hieän thöïc cho haøng lieân tuïc Ñeå toång keát nhöõng ñieàu ñaõ baøn veà haøng, chuùng ta lieät keâ döôùi ñaây taát caû caùc phöông phaùp maø chuùng ta ñaõ thaûo luaän veà caùc caùch hieän thöïc haøng. • Moâ hình vaät lyù: moät daõy tuyeán tính coù front luoân chæ vò trí ñaàu tieân trong haøng vaø moïi phaàn töû cuûa haøng phaûi di chuyeån tôùi moät böôùc khi phaàn töû taïi front ñöôïc laáy ñi. Ñaây laø phöông phaùp raát dôû trong maùy tính noùi chung. Moät daõy tuyeán tính coù hai chæ soá front vaø rear luoân luoân taêng. Ñaây laø • phöông phaùp toát neáu nhö haøng coù theå ñöôïc laøm roãng. Moät daõy voøng coù hai chæ soá front,rear vaø moät vò trí ñeå troáng. • Moät daõy voøng coù hai chæ soá front,rear vaø moät côø cho bieát haøng ñaày (hoaëc • roãng). Moät daõy voøng coù hai chæ soá front,rear vaø moät bieán ñeám soá phaàn töû hieän coù • trong haøng. Moät daõy voøng coù hai chæ soá front,rear maø hai chæ soá naøy seõ mang trò ñaëc • bieät trong tröôøng hôïp haøng roãng. 3.3.2. Phöông aùn hieän thöïc haøng lieân keát Baèng caùch söû duïng boä nhôù lieân tuïc, vieäc hieäc thöïc haøng khoù hôn vieäc hieän thöïc ngaên xeáp raát nhieàu do chuùng ta duøng vuøng nhôù tuyeán tính ñeå giaû laëp toå chöùc voøng vaø gaëp khoù khaên trong vieäc phaân bieät moät haøng ñaày vôùi moät haøng roãng. Tuy nhieân, hieän thöïc haøng lieân keát laïi thöïc söï deã daøng nhö hieän thöïc ngaên xeáp lieân keát. Chuùng ta chæ caàn naém giöõ hai con troû, front vaø rear ñeå tham chieáu ñeán phaàn töû ñaàu vaø phaàn töû cuoái cuûa haøng. Caùc taùc vuï theâm hay loaïi phaàn töû treân haøng ñöôïc minh hoïa trong hình 3.5. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 45
- Chöông 3 – Haøng ñôïi Hình 3.5 Caùc taùc vuï theâm vaø loaïi phaàn töû treân haøng lieân keát 3.4. Hieän thöïc haøng 3.4.1. Hieän thöïc haøng lieân tuïc Hieän thöïc voøng cho haøng lieân tuïc trong C++ Phaàn naøy trình baøy caùc phöông thöùc cuûa caùch hieän thöïc haøng baèng daõy voøng coù bieán ñeám caùc phaàn töû. Chuùng ta coù ñònh nghóa lôùp Queue nhö sau: Giaù trò nhoû chæ ñeå kieåm tra CTDL Queue. const int maxQueue = 10; // template class Queue { public: Queue(); bool empty() const; ErrorCode serve(); ErrorCode append(const Entry &item); ErrorCode retrieve(Entry &item) const; protected: int count; int front, rear; Entry entry[maxQueue]; }; Caùc döõ lieäu thaønh phaàn trong lôùp Queue ñöôïc khai baùo protected. Ñoái vôùi ngöôøi söû duïng seõ khoâng coù gì thay ñoåi, nghóa laø chuùng vaãn khoâng ñöôïc ngöôøi söû duïng nhìn thaáy vaø vaãn ñaûm baûo söï che daáu thoâng tin. Muïc ñích ôû ñaây laø khi chuùng ta xaây döïng lôùp Extended_Queue daãn xuaát töø lôùp Queue thì lôùp daãn xuaát seõ söû duïng ñöôïc caùc döõ lieäu thaønh phaàn naøy. Khi caùc döõ lieäu thaønh phaàn cuûa lôùp cô sôû ñöôïc khai baùo laø private thì lôùp daãn xuaát cuõng seõ khoâng nhìn thaáy chuùng. template Queue::Queue() /* post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. */ Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 46
- Chöông 3 – Haøng ñôïi { count = 0; rear = maxQueue - 1; front = 0; } template bool Queue::empty() const /* post: haøm traû veà true neáu haøng roãng; ngöôïc laïi, haøm traû veà false. */ { return count == 0; } template ErrorCode Queue::append(const Entry &item) /* post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. */ { if (count >= maxQueue) return overflow; count++; rear = ((rear + 1) == maxQueue) ? 0 : (rear + 1); entry[rear] = item; return success; } template ErrorCode Queue::serve() /* post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. */ { if (count
- Chöông 3 – Haøng ñôïi Queue, neáu nhö count ñöôïc khai baùo laø private thì phöông thöùc size cuûa lôùp Extended_Queue phaûi söû duïng haøng loaït caâu leänh goïi caùc phöông thöùc public cuûa Queue nhö serve, retrieve, append môùi thöïc hieän ñöôïc. Caùc phöông thöùc coøn laïi cuûa Extended_Queue cuõng töông töï, vaø chuùng ta daønh laïi phaàn baøi taäp. template int Extended_Queue::size() const /* post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. */ { return count; } 3.4.2. Hieän thöïc haøng lieân keát 3.4.2.1. Caùc khai baùo cô baûn Vôùi moïi haøng, chuùng ta duøng kieåu Entry cho kieåu cuûa döõ lieäu löu trong haøng. Ñoái vôùi hieän thöïc lieân keát, chuùng ta khai baùo caùc node töông töï nhö ñaõ laøm cho ngaên xeáp lieân keát trong chöông 2. Chuùng ta coù ñaëc taû döôùi ñaây: template class Queue { public: // Caùc phöông thöùc chuaån cuûa haøng Queue(); bool empty() const; ErrorCode append(const Entry &item); ErrorCode serve(); ErrorCode retrieve(Entry &item) const; // Caùc phöông thöùc baûo ñaûm tính an toaøn cho haøng lieân keát ~Queue(); Queue(const Queue &original); void operator =(const Queue &original); protected: Node *front, *rear; }; Constructor thöù nhaát khôûi taïo moät haøng roãng: template Queue::Queue() /* post: ñoái töôïng haøng ñaõ toàn taïi vaø ñöôïc khôûi taïo laø haøng roãng. */ { front = rear = NULL; } Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 48
- Chöông 3 – Haøng ñôïi Phöông thöùc append theâm moät phaàn töû vaøo ñaàu rear cuûa haøng: template ErrorCode Queue::append(const Entry &item) /* post: neáu haøng coøn choã, item ñöôïc theâm vaøo taïi rear, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø overflow, haøng khoâng ñoåi. */ { Node *new_rear = new Node (item); if (new_rear == NULL) return overflow; if (rear == NULL) front = rear = new_rear; // tröôøng hôïp ñaëc bieät: theâm vaøo haøng ñang roãng. else { rear->next = new_rear; rear = new_rear; } return success; } Tröôøng hôïp haøng roãng caàn phaân bieät vôùi caùc tröôøng hôïp bình thöôøng khaùc, do khi theâm moät node vaøo moät haøng roãng caàn phaûi gaùn caû front vaø rear tham chieáu ñeán node naøy, trong khi vieäc theâm moät node vaøo moät haøng khoâng roãng chæ coù rear laø caàn ñöôïc gaùn laïi. Phöông thöùc loaïi moät phaàn töû ra khoûi haøng ñöôïc vieát nhö sau: template ErrorCode Queue::serve() /* post: neáu haøng khoâng roãng, phaàn töû taïi front ñöôïc laáy ñi, ErrorCode traû veà laø success; ngöôïc laïi, ErrorCode traû veà laø underflow, haøng khoâng ñoåi. */ { if (front == NULL) return underflow; Node *old_front = front; front = old_front->next; if (front == NULL) rear= NULL;// tröôøng hôïp ñaëc bieät: loaïi phaàn töû cuoái cuøng cuûa haøng delete old_front; return success; } Moät laàn nöõa tröôøng hôïp haøng roãng caàn ñöôïc xem xeùt rieâng. Khi phaàn töû ñöôïc loaïi khoûi haøng khoâng phaûi laø phaàn töû cuoái trong haøng, chæ coù front caàn ñöôïc gaùn laïi, ngöôïc laïi caû front vaø rear caàn phaûi gaùn veà NULL. Caùc phöông thöùc khaùc cuûa haøng lieân keát ñöôïc daønh laïi cho phaàn baøi taäp. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 49
- Chöông 3 – Haøng ñôïi Neáu so saùnh vôùi haøng lieân tuïc, chuùng ta seõ thaáy raèng haøng lieân keát deã hieåu hôn caû veà maët khaùi nieäm caû veà caùch hieän thöïc chöông trình. 3.4.3. Haøng lieân keát môû roäng Hieän thöïc lieân keát cuûa lôùp Queue cung caáp moät lôùp cô sôû cho caùc lôùp khaùc. Ñònh nghóa döôùi ñaây daønh cho lôùp daãn xuaát Extended_Queue hoaøn toaøn töông töï nhö haøng lieân tuïc. template class Extended_queue: public Queue { public: bool full() const; int size() const; void clear(); ErrorCode serve_and_retrieve(Entry &item); }; Maëc duø lôùp Extended_Queue naøy coù hieän thöïc lieân keát, nhöng noù khoâng caàn caùc phöông thöùc nhö copy contructor, overloaded assignment, hoaëc destructor. Ñoái vôùi moät trong caùc phöông thöùc naøy, trình bieân dòch seõ goïi caùc phöông thöùc maëc ñònh cuûa lôùp Extended_Queue. Phöông thöùc maëc ñònh cuûa moät lôùp daãn xuaát seõ goïi phöông thöùc töông öùng cuûa lôùp cô sôû. Chaúng haïn, khi moät ñoái töôïng cuûa lôùp Extended_Queue chuaån bò ra khoûi taàm vöïc, destructor maëc ñònh cuûa lôùp Extended_Queue seõ goïi destructor cuûa lôùp Queue: moïi node caáp phaùt ñoäng cuûa Extended_Queue ñeàu ñöôïc giaûi phoùng. Do lôùp Extended_Queue cuûa chuùng ta khoâng chöùa theâm thuoäc tính con troû naøo ngoaøi caùc thuoäc tính con troû thöøa keá töø lôùp Queue, destructor maø trình bieân dòch goïi ñaõ laøm ñöôïc taát caû nhöõng ñieàu maø chuùng ta mong muoán. Caùc phöông thöùc ñöôïc khai baùo cho lôùp Extended_Queue caàn ñöôïc vieát laïi cho phuø hôïp vôùi caáu truùc lieân keát cuûa haøng. Chaúng haïn, phöông thöùc size caàn söû duïng moät con troû taïm window ñeå duyeät haøng (noùi caùch khaùc, con troû window seõ di chuyeån doïc theo haøng vaø laàn löôït chæ ñeán töøng node trong haøng). template int Extended_queue::size() const /* post: traû veà soá phaàn töû hieän coù cuûa haøng. Haøng khoâng ñoåi. */ { Node *window = front; int count = 0; while (window != NULL) { window = window->next; count++; } return count; } Caùc phöông thöùc khaùc cuûa Extended_Queue lieân keát xem nhö baøi taäp. Giaùo trình Caâu truùc döõ lieäu vaø Giaûi thuaät 50
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hệ quản trị cơ sở dữ liệu - chương 3 - Lưu trữ và cấu trúc tập tin
39 p |
548 |
344
-
Quản lý cơ sở dữ liệu với Microsoft SQL Server 2005 part 3
27 p |
162 |
96
-
Bài giảng Quản trị cơ sở dữ liệu Oracle: Chương 3 - GV. Cao Thị Nhâm (HV Ngân hàng)
14 p |
91 |
45
-
Bài giảng Hệ quản trị cơ sở dữ liệu Access: Chương 3,4: Một số thao tác trên CSDL/ Query
94 p |
84 |
35
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Lương Thị Ngọc Khánh
52 p |
41 |
7
-
Bài giảng Hệ quản trị CSDL FoxPro: Chương 3 - CĐSP Quảng Trị
8 p |
31 |
5
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - ThS. Nguyễn Thị Khiêm Hòa (ĐH Ngân hàng TP.HCM)
32 p |
36 |
4
-
Bài giảng Cấu trúc dữ liệu: Chương 3 - Nguyễn Xuân Vinh
17 p |
40 |
4
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 p |
30 |
4
-
Bài giảng SQL server 2005: Chương 5 - Phạm Mạnh Cương
15 p |
3 |
3
-
Bài giảng Quản trị cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hải
89 p |
36 |
2
-
Bài giảng Chương 3: Mô hình hóa dữ liệu mức quan niệm
89 p |
16 |
2
-
Bài giảng SQL server 2005: Chương 1 - Phạm Mạnh Cương
6 p |
2 |
2
-
Bài giảng SQL server 2005: Chương 2 - Phạm Mạnh Cương
15 p |
4 |
2
-
Bài giảng SQL server 2005: Chương 3 - Phạm Mạnh Cương
43 p |
6 |
2
-
Bài giảng SQL server 2005: Chương 4 - Phạm Mạnh Cương
51 p |
6 |
2
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3: Danh sách liên kết
19 p |
11 |
1

Set-Cookie: TLDEVNamespace=o3og7lid01l2fl0a6tpbkr0dp2; path=/; domain=.tailieu.vn; HttpOnly