{"id":16403269,"url":"https://github.com/ilanolkies/algo3-tp1","last_synced_at":"2026-06-14T18:34:16.118Z","repository":{"id":40961223,"uuid":"258618115","full_name":"ilanolkies/algo3-tp1","owner":"ilanolkies","description":"Trabajo Práctico 3 de Algoritmos III - Optimizando Jambo-tubos.","archived":false,"fork":false,"pushed_at":"2022-06-22T01:59:07.000Z","size":2522,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-23T17:26:03.229Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilanolkies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-24T20:33:35.000Z","updated_at":"2023-03-04T04:52:43.000Z","dependencies_parsed_at":"2022-08-27T02:05:46.286Z","dependency_job_id":null,"html_url":"https://github.com/ilanolkies/algo3-tp1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ilanolkies/algo3-tp1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilanolkies%2Falgo3-tp1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilanolkies%2Falgo3-tp1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilanolkies%2Falgo3-tp1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilanolkies%2Falgo3-tp1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilanolkies","download_url":"https://codeload.github.com/ilanolkies/algo3-tp1/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilanolkies%2Falgo3-tp1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34333806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T05:48:46.517Z","updated_at":"2026-06-14T18:34:16.105Z","avatar_url":"https://github.com/ilanolkies.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Optimizando Jambo-tubos\n\nEl problema: dado un _Jabotubo_ con resistencia ![formula](https://render.githubusercontent.com/render/math?math=R), y una secuencia ordenada de ![formula](https://render.githubusercontent.com/render/math?math=n)\nproductos ![formula](https://render.githubusercontent.com/render/math?math=S), cada uno con un peso asociado ![formula](https://render.githubusercontent.com/render/math?math=w_i) y una resistencia asociada ![formula](https://render.githubusercontent.com/render/math?math=r_i),\ndeterminar la máxima cantidad de productos que pueden apilarse en un tubo sin que ninguno\nesté aplastado.\n\nEn la figura se ilustra un ejemplo con ![formula](https://render.githubusercontent.com/render/math?math=R=50), ![formula](https://render.githubusercontent.com/render/math?math=n=5),\n![formula](https://render.githubusercontent.com/render/math?math=w=[10,20,30,10,15]) y ![formula](https://render.githubusercontent.com/render/math?math=r=[45,8,15,2,30]). La solución óptima es ![formula](https://render.githubusercontent.com/render/math?math=3), y consiste\nen tomar los elementos ![formula](https://render.githubusercontent.com/render/math?math=1), ![formula](https://render.githubusercontent.com/render/math?math=3) y ![formula](https://render.githubusercontent.com/render/math?math=4). Notar que la solución alternativa tomando los\nelementos ![formula](https://render.githubusercontent.com/render/math?math=1), ![formula](https://render.githubusercontent.com/render/math?math=3) y ![formula](https://render.githubusercontent.com/render/math?math=5) no es factible porque la suma de sus pesos es ![formula](https://render.githubusercontent.com/render/math?math=55\\textgreater%20R).\n\n\u003e Nota: los productos solamente pueden ser apilados en el orden en que son recibidos de la\n\u003e cinta transportadora. Para este problema, asumiremos que todos los valores mencionados\n\u003e son enteros no negativos.\n\n\u003cdiv style=\"text-align: center;\"\u003e\n  \u003cimg src=\"./assets/readme-1.png\" /\u003e\n  \u003cp\u003e\u003ci\u003eEjemplo de instancia del problema de Jambo-tubos.\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## Proyecto\n\nImplementamos 3 algoritmos en C++ para resolver este problema:\n\n- Fuerza bruta\n- Backtracking\n- Programación dinámica\n\nEl proyecto está organizado de la sigueinte forma:\n\n- `/src` contiene el código fuente\n- `/input` contiene entradas válidas\n- `/instancias` tiene las instancias generadas para la experimentacion\n- `/notebooks` tiene los experimentos ejecutados. Ver [experiments](#experimentos)\n\n## Algoritmos\n\nPara compilar el código fuente:\n\n```\ng++ src/main.cpp -o algo3-tp1\n```\n\nPara ejecutar:\n\n```\n./algo3-tp1 RUTA_A_ENTRADA ALGORITMO\n```\n\n- 1: fuerza bruta\n- 2: backtracking\n- 3: programacion dinamica\n- 4: backtracking sin poda de optimalidad\n- 5: backtracking sin poda de factbilidad\n\nSe puede ejecutar ambos comandos en una sola sentencia:\n\n```\ng++ src/main.cpp -o algo3-tp1 \u0026\u0026 ./algo3-tp1 RUTA_A_ENTRADA ALGORITMO\n```\n\nEjemplo:\n\n```\ng++ src/main.cpp -o algo3-tp1 \u0026\u0026 ./algo3-tp1 ./input/sample2 3\n```\n\n## Experimentacion\n\nPara usar Python v3.6.5\n\n1. Instalar `pyenv` (una sola vez)\n\n  _Como instalar `pyenv`_: https://github.com/pyenv/pyenv#installation\n\n  Mac:\n\n  ```\n  brew update\n  brew install pyenv\n  eval \"$(pyenv init -)\"\n  ```\n\n2. Instalar v3.6.5 (una sola vez)\n\n  ```\n  pyenv install 3.6.5\n  ```\n\n3. Activar v3.6.5 (cada nueva consola debe ejecutarlo una vez)\n\n  ```\n  eval \"$(pyenv init -)\"\n  pyenv global 3.6.5\n  ```\n\n4. Checkear con\n\n  ```\n  $ python --version\n  Python 3.6.5\n  ```\n\n5. Instalar dependencias\n\n  ```\n  pip install -r requirements.txt\n  ```\n\n## Notebooks\n\nAbrir notebooks con\n\n```\njupyter notebook notebooks/\n```\n\n- Experimento 3.1: Comparacion entre algoritmos - `Comparacion`\n- Experimento 3.2: Complejidad de fuerza bruta - `ComplejidadFuerzaBruta`\n- Experimento 3.3: Efectividad de las podas de backtracking - `podas`\n- Experimento 3.4: Orden de productos vs. backtracking con distintas podas - `podasOrdenadas`\n- Experimento 3.5: Complejidad de programación dinamica -  - `ComplejidadDinamica`\n\n## Ayuda\n\nMas ayuda en:\n\n```\n./bin/algo3-tp1 help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filanolkies%2Falgo3-tp1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filanolkies%2Falgo3-tp1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filanolkies%2Falgo3-tp1/lists"}