Ir para o conteúdo principal
e-Disciplinas
  • Disciplinas »
    2026 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 2015 2014 2013 2012 AACCs/FFLCH Pró-Reitoria de Pós-Graduação Outros
  • Suporte »
    Acesso Perfis Ouvintes Docentes Criação de Disciplinas da USP Documentação HelpDesk e Contato Guia de uso Sobre
  • Português - Brasil ‎(pt_br)‎
    Deutsch ‎(de)‎ English ‎(en)‎ Español - Internacional ‎(es)‎ Français ‎(fr)‎ Italiano ‎(it)‎ Português - Brasil ‎(pt_br)‎
  • Fechar
    Alternar entrada de pesquisa
  • Acessar

CCM0128 - Computação II (2025i)

  1. Início
  2. Ambientes
  3. 2025
  4. RUSP
  5. CCM
  6. 0128.2025i
  7. Exercícios propostos em sala
  8. S01 Busca em A + A

S01 Busca em A + A

Condições de conclusão
Vencimento: quinta-feira, 13 mar. 2025, 23:59

Seja \(A\) um conjunto de inteiros, que encontram-se armazenados em um vetor $a$. Seja $N$ a cardinalidade de $A$. Suponha que os elementos de $A$ ocorrem de forma estritamente crescente em $a$, isto é, $a[0]<a[1]<\dots<a[N-1]$. Neste exercício, definimos $A+A$ como sendo o conjunto $\{a[i]+a[j]:0\leq i<j<N\}$. Seja $x$ um inteiro. Queremos saber se $x$ ocorre em $A+A$. Na verdade, queremos saber quantos pares $(i, j)$ com $0\leq i<j<N$ são tais que $a[i] + a[j] = x$.

As funções countPlain e count em SumSearch.java abaixo determinam o número de pares $(i, j)$ como especificados acima. O algoritmo implementado em countPlain é o algoritmo elementar, que tem complexidade de tempo $N^2$: se seu tempo de execução é $T_N$ para $A$ com $N$ elementos, então $T_N$ tem ordem de grandeza $N^2$.

(1) Prove que o algoritmo em count tem complexidade de tempo não maior que $N$. Isto é, argumente que o tempo de execução $T_N$ de count para vetores com $N$ elementos tem ordem de grandeza não maior que $N$. Note que, para tanto, basta você provar que o corpo do while em count é executado não mais que, por exemplo, $N$ vezes.

(2) Prove que count está correto, isto é, que ele determina corretamente o número de pares $(i, j)$ que queremos contar.

(3) Decida se o count funciona corretamente no caso em que $a$ é apenas crescente, e não estritamente crescente. Isto é, decida se count funciona se apenas sabemos que $a[0]\leq a[1]\leq\dots\leq a[N-1]$. Justifique sua resposta.

Sugestões. Para (1), considere a diferença $hi - lo$. Para (2), considere a afirmação

$A(lo, hi)$: O valor de $t$ é o número de pares $(i, j)$ com $i < j$ e $a[i] + a[j] = x$ satisfazendo a propriedade que ou $i < lo$ ou $j > hi$.

Considere os instantes $I_0,I_1,\dots$ em que o teste $lo<hi?$ do while em count é executado. Note que $A(lo,hi)$ é verdade no instante $I_0$. Suponha agora que $A(lo,hi)$ vale no instante $I_{k-1}$. Argumente que $A(lo,hi)$ vale no instante $I_k$. Conclua (2) acima.

  • S01 S01
    6 março 2025, 15:54 PM
  • S01.tar.gz S01.tar.gz
    6 março 2025, 15:54 PM
◄ Fórum de discussões
S02 Mergesort com menos acessos à memória ►

Blocos

Pular Navegação
  • Início

    • e-Disciplinas

      • Meus Ambientes

      • Tags

      • Pesquisar

      • PáginaSobre

      • PáginaHelp Desk e Contato

      • PáginaGuia

    • Meus Ambientes

    • Ambientes

      • 2025

        • CENA

        • EACH

        • ECA

        • EE

        • EEFE

        • EEFERP

        • EEL

        • EERP

        • EESC

        • EP

        • ESALQ

        • FAU

        • FCF

        • FCFRP

        • FD

        • FDRP

        • FE

        • FEA

        • FEARP

        • FFCLRP

        • FFLCH

        • FM

        • FMBRU

        • FMRP

        • FMVZ

        • FO

        • FOB

        • FORP

        • FSP

        • FZEA

        • IAG

        • IAU

        • IB

        • ICB

        • ICMC

        • IEB

        • IEE

        • IF

        • IFQSC

        • IFSC

        • IGc

        • IME

        • IO

        • IP

        • IPEN

        • IQ

        • IQSC

        • IRI

        • HRAC

        • MAC

        • MAE

        • MP

        • MZ

        • RUSP

          • PRG

          • CCM

            • CCM0118-235-2025

            • CCM0214-2025

            • CCM0113-235-2025

            • CCM0212-234-2025

            • CCM0211-2025

            • CCM0213-2025

            • CCM0218-234-2025*

            • CCM0218-234-2025

            • CCM0114-235-2025

            • Biologia 1 - 2025

            • CCM0215-134-2025

            • CCM0121-2025

            • CCM0221-2025

            • 0128.2025i

              • Geral

              • Exercícios propostos em sala

                • TarefaS01 Busca em A + A

              • Exercícios-programa

            • CCM0122-134-2025

            • CCM0223-133-2025

            • CCM0222-133-2025

            • CCM0224-133-2025

            • CCM0124-134-2025

          • IAL

          • DPG

          • PDPD

          • PDPD

          • PDPD

          • PDPD

          • PDPD2025

          • PDPD2025

          • Ciclo PDPD2025

      • 2026

      • 2024

      • 2023

      • 2022

      • 2021

      • 2020

      • 2019

      • 2018

      • 2017

      • 2016

      • 2015

      • 2014

      • 2013

      • 2012

      • Grupos de Estudos, Pesquisa e Outros

      • PRPG - Pró-Reitoria de Pós-Graduação

      • STI

Blocos suplementares

Você acessou como visitante (Acessar)
Fornecido por Moodle