Latar Belakang
Pada saat penulisan ini, masalah P vs NP masih belum terpecahkan, tetapi Anda mungkin pernah mendengar tentang makalah baru Norbert Blum yang mengklaim bukti bahwa P! = NP, yang sudah diduga salah (tapi kita akan lihat nanti).
Masalah yang dibahas dalam makalah ini adalah masalah klik . Setidaknya itulah yang saya baca di artikel surat kabar, jadi perbaiki jika saya salah, tetapi dalam hal apa pun, saya ingin Anda menulis sebuah program yang memecahkan varian berikut:
Tugas
Anggaplah kita memiliki sekolah besar dengan banyak siswa. Masing-masing siswa memiliki beberapa teman di sekolah ini. Sebuah kelompok mahasiswa adalah kelompok yang terdiri hanya dari siswa yang berteman dengan setiap anggota lainnya .
Program Anda akan menerima pasangan siswa yang menjadi teman sebagai masukan. Dari informasi ini, program harus menemukan ukuran klik terbesar . Siswa diidentifikasi dengan ID integer .
Jika Anda lebih suka istilah matematika, ini berarti Anda mengumpankan tepi grafik yang tidak terarah, diidentifikasi oleh dua node masing-masing.
Memasukkan
Input Anda akan berupa daftar pasangan integer positif yang tidak kosong, mis [[1,2],[2,5],[1,5]]
. Anda dapat mengambil input ini dalam bentuk apa pun yang masuk akal, misalnya sebagai array array, sebagai baris teks yang masing-masing berisi dua angka, dll ...
Keluaran
Output yang diharapkan adalah angka tunggal n >= 2
: ukuran klik terbesar. Dengan contoh input di atas, hasilnya akan menjadi 3
, karena semua siswa ( 1
, 2
dan 5
) berteman satu sama lain.
Uji kasus
[[1,2]]
=> 2
[[1,2],[3,1],[3,4]]
=> 2
[[1,2],[2,5],[1,5]]
=> 3
[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])
[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])
[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
[52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
[1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
[1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])
Anda dapat menggunakan implementasi referensi (bodoh) ini (mencetak hasil tambahan dengan -d
bendera) untuk memverifikasi hasil dari kasus uji lainnya.
Aturan
- Program Anda tidak memerlukan hasil yang ditentukan pada input yang tidak valid. Jadi Anda dapat berasumsi bahwa:
- Anda akan selalu mendapatkan setidaknya sepasang ID
- setiap pasangan terdiri dari dua ID yang berbeda
- tidak ada pasangan yang muncul dua kali (menukar tempat ID akan tetap menjadi pasangan yang sama)
- Algoritme Anda tidak diizinkan untuk menetapkan batas atas pada ukuran input. Batasan dan batasan teknis murni yang ditentukan oleh bahasa / lingkungan Anda (seperti ukuran tumpukan, waktu komputasi, dll) tentu saja tidak dapat dihindari.
- Celah standar dilarang.
- Ini adalah kode-golf , jadi kode terpendek, diukur dalam byte, menang.
- Jika algoritme Anda memiliki kompleksitas waktu polinomial, Anda skor
-1
langsung terlepas dari ukuran kode Anda, tetapi dalam hal ini, Anda mungkin ingin mengirimkan solusi Anda di tempat lain. ;)
-1
itu memang layak ;)