Công thức đa giác lồi


7

Chúng tôi có một danh sách sắp xếp các độ dài bên có thể được sử dụng để tạo thành một đa giác. Có giá trị như vậy ( ).nn1000

Bây giờ chúng ta cần tìm xem chúng ta có thể sử dụng bất kỳ 10 giá trị nào trong số này để tạo thành một đa giác lồi không suy biến hay không.

Làm thế nào để chúng ta tiếp cận điều này? Bất cứ điều gì theo thứ tự đều được chấp nhận. Tốt hơn nếu có thể. Tôi cần ý tưởng chung về cách tiến hành, các thuộc tính của đa giác lồi có thể được khai thác ở đây, v.v.Ôi(n2đăng nhậpn)


Tôi có thể hỏi bạn cần cái này để làm gì không? Giới hạn cụ thể của bạn về đầu vào và thời gian là thú vị ... Dù bằng cách nào, nghe có vẻ như một câu hỏi khó.
jmite

1
Hai quan sát: độ lồi không quan trọng. Xem điều này: cs.mcgill.ca/~cs507/projects/1998/mas/main2.html Thật dễ dàng để xác định xem người ta có thể xây dựng một đa giác từ tập hợp độ dài: mathoverflow.net/questions/96617/ hay
Chao Xu

Đây có phải là vấn đề TKCONVEX trên Codechef ? Quan điểm của các cuộc thi này là tìm ra các thuật toán có liên quan hoặc ít nhất là các tài liệu liên quan theo cách riêng của bạn. (Lưu ý rằng trên Khoa học Máy tính , chúng tôi không có chính sách chống lại các cuộc thi đang diễn ra , không giống như Toán học .)
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles thậm chí thuật toán dưới đây sẽ cung cấp cho một WA. Điều này là không đủ để có được vấn đề chính xác. Và chúng tôi là những sinh viên chưa tốt nghiệp lập trình, nhưng chúng tôi muốn học. Và các cuộc thi thúc đẩy tất cả mọi người. Và nếu chúng ta học được thậm chí 10 thuật toán mới cho mỗi cuộc thi, mức tăng là rất lớn. Nếu ai đó chỉ cho chúng tôi đi đúng hướng (lưu ý rằng chỉ trỏ, không có mã, không có gì), có nhiều khả năng chúng tôi sẽ tìm hiểu thuật toán thực tế cho vấn đề. Vì vậy, chỉ cần cố gắng học .. nếu tôi giải quyết vấn đề nhiều hơn, điều đó sẽ không ảnh hưởng đến bảng xếp hạng. Vì vậy, tôi nghĩ rằng nó không thành vấn đề, nếu nó giúp chúng ta học hỏi
Alice

Tôi nghĩ Codechef có một diễn đàn thảo luận nơi mọi người đăng giải pháp sau khi cuộc thi kết thúc.
Chao Xu

Câu trả lời:


6

Định lý 1. Với mọi đa giác có chuỗi độ dài cạnhmột1,Giáo dục,mộtm, tồn tại một đa giác lồi có trình tự chiều dài cạnh.

Bằng chứng. Đây .

Định nghĩa. một1,Giáo dục,mộtnnthực không âm. Nó đáp ứng (nghiêm ngặt)nbất đẳng thức đường chéo nếu2mộtj<ΣTôi= =1nmộtTôi cho tất cả j.

Định lý 2. Trình tựmột1,Giáo dục,mộtn là một chuỗi độ dài cạnh cho đa giác nếu nó thỏa mãn nbất đẳng thức đường chéo.

Bằng chứng. Đây . (lưu ý bằng chứng ở đây yêu cầu toán nâng cao và cũng chứng minh Định lý 1)

Vấn đề giảm xuống:

Đưa ra một chuỗi n thực tế không tiêu cực, tìm một k phần tử tiếp theo thỏa mãn kbất đẳng thức đường chéo.

Một thuật toán đơn giản: Kiểm tra xem mộtTôi,Giáo dục,mộtTôi+k-1 là một giải pháp cho mọi 1Tôin-k+1. Nếu không ai trong số họ làm việc, thì không có giải pháp.

Bằng chứng. Nếu chúng ta có bất kỳ giải phápmộtTôi1,Giáo dục,mộtTôik, tìm lớn nhất j, như vậy mà mộtTôij+1-mộtTôij>1, (tức là có một khoảng cách). Nếu không có khoảng cách như vậy thì chúng ta đã xong. Nếu có, thìmộtTôi2,Giáo dục,mộtTôij,mộtTôij+1-1,mộtTôij+1,Giáo dục,mộtTôikcũng là một giải pháp. (theo trực giác, chúng tôi đã sử dụng phần tử lớn nhất trong khoảng trống và loại bỏ phần tử nhỏ nhất). Chúng ta có thể lặp lại bước này (nhiều nhất làk-1lần) và điền vào tất cả các khoảng trống. Cuối cùng, chúng tôi đã tạo ra một giải pháp của mẫumộtTôik-k+1,mộtTôik-k,Giáo dục,mộtTôik-1,mộtTôik cho một số Tôi.

Thuật toán có thể được thực hiện một cách ngây thơ trong Ôi(kn)thời gian. Có lẽ có một cách thông minh hơn để làm điều đó.

Một câu hỏi tiếp theo thú vị:

Đưa ra một chuỗi n thực không âm, tìm chuỗi dài nhất S, sao cho mỗi k phần tử sau của S thỏa mãn kbất đẳng thức đường chéo .


định lý 2 đó có phải là phần mở rộng của bất đẳng thức tam giác không? Và tại sao phân loại cần thiết? Chúng ta có thể chọn bất kỳ tập con k của các điểm đã cho thỏa mãn định lý thứ hai.
Alice

Bạn không cần phải sắp xếp, sắp xếp chỉ làm giảm độ phức tạp của thời gian: chỉ kiểm tra Ôi(n) thay vì 2n.
Chao Xu

dường như không hoạt động. bạn có chắc chỉ kiểm tra đa giác nk không?
Alice

Vui lòng cung cấp một ví dụ khi điều này không hoạt động.
Chao Xu

3
Có một cách tốt hơn để làm điều đó. Giữ tổng số hoạt động cuối cùngk cạnh (bằng cách thêm mộtTôi+k để và trừ mộtTôi từ tổng số chạy này) và sử dụng tổng số chạy này để kiểm tra kbất đẳng thức đường chéo. Điều này làm giảm thời gian từÔi(kn) đến Ôi(n).
Peter Shor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.