Apa bagian dari aljabar linier yang digunakan dalam ilmu komputer?

15

Saya telah membaca Aljabar Linier dan Aplikasinya untuk membantu memahami materi sains komputer (terutama pembelajaran mesin), tetapi saya khawatir bahwa banyak informasi yang tidak berguna bagi CS. Misalnya, mengetahui cara memecahkan sistem persamaan linear secara efisien sepertinya tidak terlalu berguna kecuali Anda mencoba memprogram pemecah persamaan baru. Selain itu, buku ini telah berbicara banyak tentang rentang, ketergantungan linier, dan kemandirian, ketika sebuah matriks memiliki kebalikan, dan hubungan antara ini, tetapi saya tidak dapat memikirkan aplikasi ini dalam CS. Jadi, apa bagian dari aljabar linier yang digunakan dalam CS?

Kelmikra
sumber
2
Apakah Anda meminta keuntungan Anda sendiri, atau apakah Anda seorang guru mencari strategi untuk memotivasi siswa Anda?
Raphael
Aljabar linier berguna di banyak bagian grafik komputer (Anda dapat menemukan banyak informasi yang terkait dengan googling).
Juho
Memecahkan sistem persamaan linear sangat berguna dalam ilmu komputer. Misalnya: en.m.wikipedia.org/wiki/Combinatorial_optimization
Ant P
1
Matriks banyak digunakan dalam pengembangan game, IE untuk proyeksi, rotasi, dan matematika angka empat.
Paul
@ Paulpro Pertanyaannya adalah untuk aplikasi aljabar linier (badan kerja), bukan matriks (satu set objek).
Raphael

Jawaban:

11

Bagian-bagian yang Anda sebutkan adalah konsep dasar aljabar linier. Anda tidak dapat memahami konsep yang lebih maju (katakanlah, nilai eigen dan vektor eigen) sebelum terlebih dahulu memahami konsep dasar. Tidak ada jalan pintas dalam matematika. Tanpa pemahaman intuitif tentang konsep rentang dan kemandirian linier, Anda tidak akan bisa jauh dalam aljabar linier.

Beberapa algoritma hanya bekerja dengan matriks peringkat penuh - Apakah Anda tahu artinya? Apakah Anda tahu apa yang bisa membuat matriks tidak peringkat penuh? Bagaimana cara mengatasinya? Anda tidak akan memiliki petunjuk jika Anda tidak tahu apa itu kebebasan linear.

Algoritma eliminasi Gaussian yang digunakan untuk menyelesaikan persamaan linier sebenarnya dapat menjadi tidak stabil secara numerik jika diterapkan secara tidak benar, dan ini adalah sesuatu yang mungkin perlu Anda khawatirkan dalam beberapa kasus. Tanpa memahami algoritma Anda tidak akan tahu dari mana masalah itu berasal dan apakah ada sesuatu yang dapat Anda lakukan - tidak pada level algoritma untuk menyelesaikan persamaan linier, tetapi pada level mencari persamaan linear yang benar untuk dipecahkan.

Singkatnya, jangan malas, dan percayailah bahwa hal-hal ini berguna.

Yuval Filmus
sumber
5
"anggaplah hal-hal ini berguna" - yah, tidak semua dari kita tahu guru yang memuat kuliah mereka dengan kekasih mereka tanpa peduli tentang kegunaan keseluruhan? Siswa tidak bisa benar-benar membedakannya, tetapi mereka juga tidak boleh percaya secara membuta. "Untuk apa aku membutuhkan ini?" adalah pertanyaan yang adil, tetapi "Ini hanya untuk melatih pikiran Anda" juga merupakan jawaban yang adil.
Raphael
9
"Jangan malas" menetapkan nada yang tidak konstruktif. Saya sudah sangat ingin tahu, bertunangan, dan sama sekali tidak siswa yang malas bertanya kepada saya pertanyaan ini. Saya pikir sebagian besar siswa CS menemukan kelas Aljabar Linier tradisional menjadi dunia yang terpisah dari apa yang mereka pikir mereka butuhkan. Minat mereka adalah komputasi dan pemrograman, dan belum tentu matematika. Membutuhkan atau menginginkan konteks dan motivasi bukanlah tanda kemalasan. Jangan dicat seperti itu.
Logan Mayfield
@ Raphael, Logan Mayfield, apakah kalian tahu bagaimana pembelajaran mesin terkait dengan aljabar linier? Meskipun sedikit spesifik, Yuval cukup tepat di sini pada contoh-contoh yang telah ia sebutkan. Pertanyaan OP tidak dapat sepenuhnya dijawab hanya dalam satu posting Internet.
musicliftsme
7

Aljabar linier terkadang sangat berguna dan kuat dalam algoritma grafik. Dengan teorema matrix-tree, Anda dapat menghitung jumlah spanning tree secara efisien (Anda perlu memahami nilai eigen). Aplikasi yang lebih menantang, di mana Anda membutuhkan pemahaman aljabar linier yang lebih kencang adalah algoritma FKT untuk menghitung jumlah pencocokan sempurna dalam grafik planar dalam waktu polinomial.

Ada banyak contoh yang lebih menarik tentang penggunaan aljabar linier dalam teori grafik aljabar dan teori grafik spektral . Algoritma yang muncul tidak hanya untuk menghitung masalah seperti dua contoh yang saya berikan. Misalnya, Anda juga dapat memeriksa konektivitas , atau menghitung diameter grafik .

Juho
sumber
Orang bertanya-tanya mengapa seseorang ingin menghitung jumlah pohon yang merentang atau pasangan yang sempurna. Apa gunanya ini? Apakah Anda memiliki aplikasi dunia nyata dalam pikiran?
Yuval Filmus
@YuvalFilmus saya tidak, dan mungkin lebih sulit untuk datang dengan aplikasi menghitung masalah untuk memulai. Saya pikir keduanya menarik sebagian besar dari perspektif teoretis, meskipun entri wiki dari FKT memberikan beberapa sejarah dan motivasi. Bagaimanapun, poin utamanya adalah aljabar linier berguna untuk mengembangkan algoritma grafik, dan karenanya memiliki aplikasi dalam ilmu komputer.
Juho
6

Salah satu penggunaan aljabar linier yang paling terkenal adalah dalam algoritma Pagerank Google :

Nilai-nilai PageRank adalah entri dari vektor eigen kiri dominan dari matriks kedekatan yang dimodifikasi.

Robert S. Barnes
sumber
3

Hampir semua hal yang melibatkan grafik komputer, animasi, visi komputer, pemrosesan gambar, komputasi ilmiah, atau simulasi fenomena fisik akan melibatkan penggunaan luas vektor dan matriks (aljabar linier) dari hal-hal sederhana seperti mewakili transformasi dan orientasi spasial, hingga algoritma yang sangat kompleks. Hal-hal ini dulunya merupakan domain superkomputer, tetapi sekarang bidang yang sama ini adalah inti dari semua aplikasi paling keren di desktop, ponsel, dan di mana saja, mulai dari video game, fotografi komputasi, hingga mobil self-driving. Aljabar linier ada di mana-mana.

Larry Gritz
sumber
2

Ada banyak algoritma dan teknik berbasis aljabar matriks di luar sana. Dan itu bagus. Analisis komponen utama adalah contoh dari beberapa aljabar linier terapan yang cukup berguna. Hal yang sama dapat dikatakan tentang analisis Fourier, yang juga berakar pada ortogonalitas dan produk dalam. Jadi ada aplikasi langsung.

TETAPI , yang lebih penting lagi, mengambil kelas aljabar linier sangat berharga karena mengajarkan Anda untuk berpikir dengan cara tertentu. Kebanyakan kelas aljabar linier yang baik menekankan pada generalisasi, logika, dan bukti. Apakah sesuatu itu benar secara umum, atau hanya kasus-kasus tertentu tertentu, umum? Bagaimana Anda bisa yakin? Mampu memikirkan bagaimana membuktikan asumsi Anda itu baik karena itu membantu Anda menjaga diri dari membuat asumsi yang buruk dan menulis kode yang tidak menyamaratakan dengan cara yang Anda anggap benar. Ini juga membantu Anda berpikir tentang cara menggeneralisasi hal-hal yang mungkin sulit digeneralisasi, dan memungkinkan Anda memecahkan masalah yang lebih besar.

Singkatnya, ada baiknya untuk diingat bahwa aljabar linier itu baik karena itu mengangkat beban untuk bagian otak Anda yang berguna dalam ilmu komputer.

Anjing
sumber
0

Memecahkan sistem persamaan linear (yang dapat dilakukan dengan metode eliminasi Gaussian), pemrograman linier (yang dapat diselesaikan dengan metode simpleks), kuadrat terkecil, dan penginderaan terkompresi (lihat artikel Wikipedia) adalah masalah praktis yang muncul dalam banyak area aplikasi. Aljabar linier membantu mengembangkan algoritma yang benar dan efisien untuk masalah ini.

Lihat teks [Cormen, Leiserson, Rivest dan Stein, "Pengantar Algoritma, Edisi Ketiga"], di mana Bab 28 tentang operasi matriks dan Bab 29 tentang pemrograman linier.

Ashwin Ganesan
sumber