infoarena informatica de performanta
info
arena
b
log
f
orum
calendar
autentificare
inregistrare
infoarena
>
Comunitate - feedback, proiecte si distractie
>
Blog
> Subiect:
Transpose
Pagini: [
1
]
În jos
« mesajul precedent
următorul mesaj »
Imprimă
Ajutor
Subiect: Transpose (Citit de 5553 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
•
Cosmin
Echipa infoarena
Nu mai tace
Karma: 351
Deconectat
Mesaje: 1.799
Transpose
«
:
Octombrie 29, 2013, 02:35:04 »
http://www.infoarena.ro/blog/transpose
Memorat
•
skipy
Strain
Karma: 8
Deconectat
Mesaje: 46
Răspuns: Transpose
«
Răspunde #1 :
Octombrie 29, 2013, 13:15:26 »
A solution can be obtained by splitting the initial matrix into 100 smaller sub-matrices, using files on disk. Since each sub-matrix will have 1 GB, we can load it in memory, transpose it, then write it back to disk. The final step consists of assembling all 100 sub-matrices in the correct order, into another 100GB file.
This works because:
(A B)
T
= (A
T
C
T
)
(C D) (B
T
D
T
)
(assuming A, B, C and D are square sub-matrices).
Memorat
Cheap VR WoW could destroy modern society...
•
Cosmin1490
Strain
Karma: 1
Deconectat
Mesaje: 17
Răspuns: Transpose
«
Răspunde #2 :
Octombrie 29, 2013, 16:27:16 »
Is the file in binary or text format ? It wouldn't be that hard to interchange between them but I am curious.
LE: I'm thinking that with the binary format you could seek in that file, this enables you to even transpose it in place,
without even using any significant memory or extra disk space for even larger files. But this is slow due to all those disk read/write/seek operations.
«
Ultima modificare: Octombrie 29, 2013, 16:51:59 de către Balan Radu Cosmin
»
Memorat
•
marius21
Strain
Karma: -20
Deconectat
Mesaje: 27
Răspuns: Transpose
«
Răspunde #3 :
Octombrie 29, 2013, 21:35:56 »
Read a few lines down of the matrix and start constructing the rows of the transposed matrix left to right in memory. When the memory fills, dump them to disk in a preallocated file by seeking to the beginning of each row if it's binary, or by writing each row to an individual file then cat-ing them together if it's text. You'll only have sqrt(100G) * 100 = 31600000 seeks to do then if it's binary.
Memorat
Pagini: [
1
]
În sus
Imprimă
infoarena
>
Comunitate - feedback, proiecte si distractie
>
Blog
> Subiect:
Transpose
« mesajul precedent
următorul mesaj »
Schimbă forumul:
Selectează o destinaţie:
-----------------------------
infoarena - concursuri, probleme, evaluator, articole
-----------------------------
=> Concursuri
===> Junior Challange 2023
===> Algoritmiada 2022
=====> Runda 1
=====> Runda 2
=====> Runda 3
=====> Runda 4
===> Summer Challenge 2021
===> Junior Challenge 2021
===> FMI No Stress 10
===> Winter Challenge 2020
===> Autumn WarmUp 2020
===> Summer Challenge 2020
===> Junior Challenge 2020
===> Concurs de incalzire 2020
===> FMI No Stress 9
===> Autumn WarmUp 2019
===> Summer Challenge 2019
===> Junior Challange 2019
===> Algoritmiada 2019
===> Info Oltenia 2019
===> Arhiva concursuri
=====> Info Oltenia 2018
=====> Junior Challenge 2018
=====> Algoritmiada 2018
=====> AGM 2018
=====> Grigore Moisil 2018
=====> RCPC 2018
=====> Fmi No Stress 8
=====> Urmasii lui Moisil 2017
=====> Grigore Moisil 2017
=====> Prosoft @ NT
=====> Algoritmiada 2017
=====> PreOJI 2017
=====> FMI No Stress 2017
=====> AGM 2017
=====> Lot 2017
=====> ACM ICPC Faza Nationala 2017
=====> PreOJI 2016
=====> ONIS 2016
=====> Grigore Moisil 2016
=====> Urmasii lui Moisil 2016
=====> AGM 2016
=====> Algoritmiada 2016
=====> FMI No Stress 6
=====> Urmasii lui Moisil 2015
=====> FMI No Stress 5
=====> ONIS 2015
=====> Concursul National de Soft Grigore Moisil Lugoj
=====> ACM-ICPC Faza Nationala 2014-2015
=====> Infoarena Monthly 2014
=====> Concurs Mihai Patrascu 2013
=====> Algoritmiada 2015
=====> AGM 2015
=====> Junior Challenge 2015
=====> ONIS 2014
=====> Algoritmiada 2014
=====> FMI No Stress 4
=====> preONI 2006
=====> .com 2012
=====> Infoarena Monthly 2012
=====> Code Pandas
=====> Algoritmiada 2013
=====> FMI No Stress 3
=====> FMI No Stress 2012
=====> Junior Challenge 2012
=====> Algoritmiada 2012
=====> .com 2011
=====> Girls Programming Camp 2011
=====> Algoritmiada 2011
=====> F11 Competition 2011
=====> Tiberiu Popoviciu 2011
=====> Grigore Moisil 2011
=====> RMMS 2011
=====> FMI No Stress 2010
=====> Grigore Moisil 2010
=====> .com 2009
=====> Stelele Informaticii 2009
=====> Stelele Informaticii 2010
=====> Algoritmiada 2009
=====> Algoritmiada 2010
=====> Grigore Moisil 2009
=====> CCEX 2009
=====> Summer Challenge 2009
=====> All You Can Code 2008
=====> Selectie echipe ACM ICPC, UPB 2008
=====> Junior Challenge 2008
=====> Happy Coding 2008
=====> preONI 2008
=====> Grigore Moisil 2008
=====> Winter Challenge 2008
=====> Happy Coding 2007
=====> Autumn Warmup 2007
=====> preONI 2007
=====> Summer Challenge 2007
=====> Junior Challenge
=====> Winter Challenge 1
=====> Unirea 2007
=====> Happy Coding 2006
=====> Autumn WarmUp 2006
=====> Summer Challenge Doi
=====> Summer Challenge
=====> Happy coding
=====> Grigore Moisil
=====> Happy Birthday Infoarena
===> RCPC 2019
===> Summer Challenge Trei
=> Arhiva de probleme
===> Probleme pentru bacalaureat
=> Arhiva Infoarena Monthly
=> Arhiva ACM
=> Arhiva educationala
=> Concursuri virtuale
=> Informatica
===> Teme
=> Articole
===> Downloads
=> Probleme externe
===> .CAMPION
===> SGU
===> TIMUS
===> UVA
===> SPOJ
===> PKU
===> TJU
-----------------------------
Comunitate - feedback, proiecte si distractie
-----------------------------
=> Implica-te!
===> Arhiva educationala
===> Imbunatatire teste
===> Development
===> Scrie articole
===> Extinde arhiva
=> Blog
=> Feedback infoarena
===> Sondaje
===> Arhiva
===> IAP (Infoarena Proposal)
=> Off topic
Se încarcă ...